如何为行数据框中发现的任何不匹配选择行名称和行

我有一个这样的数据框 R

df <- data.frame(V1=c("L", "L", "P", "P"), V2=c("M", "M", "M" , "M"), V3=c("X", "X", "X", "X" ), V4=c( "V","V","V","V"))

我想根据行发现的不匹配对这个数据框进行子集化,并像这样创建两个不同的表

df1 
  V1 V2 V3 V4
1  L  M  X  V
2  L  M  X  V

df2
V1 V2 V3 V4
1 P  M  X  V
2 P  M  X  V

我知道可以通过,split(df, df$V1)但我想知道是否有一种更“自动”的方式,我不必指定不匹配的 col
谢谢!

回答

在基础 R 中,您可以使用:

split(df, do.call(paste, df))

$`L M X V`
  V1 V2 V3 V4
1  L  M  X  V
2  L  M  X  V

$`P M X V`
  V1 V2 V3 V4
3  P  M  X  V
4  P  M  X  V


回答

您可以df直接使用split(感谢@27-?-9 的评论!)

split(df, df)
#$L.M.X.V
#  V1 V2 V3 V4
#1  L  M  X  V
#2  L  M  X  V
#
#$P.M.X.V
#  V1 V2 V3 V4
#3  P  M  X  V
#4  P  M  X  V

或与interactionin一起使用split

split(df, interaction(df))
#$L.M.X.V
#  V1 V2 V3 V4
#1  L  M  X  V
#2  L  M  X  V
#
#$P.M.X.V
#  V1 V2 V3 V4
#3  P  M  X  V
#4  P  M  X  V


以上是如何为行数据框中发现的任何不匹配选择行名称和行的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>