【发布时间】:2013-02-28 21:52:02
【问题描述】:
我正在尝试对数据框进行子集化,其中我根据多个列值获取多个数据框。这是我的例子
>df
v1 v2 v3 v4 v5
A Z 1 10 12
D Y 10 12 8
E X 2 12 15
A Z 1 10 12
E X 2 14 16
预期的输出是这样的,我根据列 v1 和 v2 将此数据帧拆分为多个数据帧
>df1
v3 v4 v5
1 10 12
1 10 12
>df2
v3 v4 v5
10 12 8
>df3
v3 v4 v5
2 12 15
2 14 16
我编写了一个现在可以运行的代码,但我认为这不是最好的方法。必须有更好的方法来做到这一点。假设tab 是具有初始数据的data.frame。这是我的代码:
v1Factors<-levels(factor(tab$v1))
v2Factors<-levels(factor(tab$v2))
for(i in 1:length(v1Factors)){
for(j in 1:length(v2Factors)){
subsetTab<-subset(tab, v1==v1Factors[i] & v2==v2Factors[j], select=c("v3", "v4", "v5"))
print(subsetTab)
}
}
有人可以提出更好的方法来完成上述操作吗?
【问题讨论】:
-
您想重复使用这些数据帧,还是只打印按这些列分组的数据?
-
我想重复使用它们....想在这些数据帧上绘制图表。
标签: r dataframe subset multiple-columns