如何为行数据框中发现的任何不匹配选择行名称和行
我有一个这样的数据框 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