【发布时间】:2016-12-14 22:16:13
【问题描述】:
我有一个大数据框,我希望将其拆分为不同的(较小的)数据框,这些数据框包含两个不同列中的任何一个中的元素。假设我有一个如下所示的数据框:
v1 v2 v3 v4 v5
mom dad 2 4 5
bro mom 5 3 4
sis dad 3 4 2
bro sis 3 7 9
我想将其拆分为 4 个单独的数据帧,每个数据帧对应 v1 或 v2 中的每个唯一值。新的数据框应如下所示:
$mom
v1 v2 v3 v4 v5
mom dad 2 4 5
bro mom 5 3 4
$dad
v1 v2 v3 v4 v5
mom dad 2 4 5
sis dad 3 4 2
$sis
v1 v2 v3 v4 v5
sis dad 3 4 2
bro sis 3 7 9
$bro
bro mom 5 3 4
bro sis 3 7 9
我可以使用 for 循环来做到这一点,但我希望最终输出是一个列表,以便轻松地对每个元素执行功能。我使用的 for 循环如下所示:
for(i in 1:length(us)){
subset.dataframe <-dataframe[dataframe$v1 == us[i] | dataframe$v2 == us[i],]
}
其中“us”是(v1 和 v2)列组合的唯一值的向量。
提前感谢您提供的任何帮助。
【问题讨论】:
-
来自过于复杂的代码部门 -
c( split(df, pmax(df$v1, df$v2)), split(df, pmin(df$v1, df$v2)) )