我有一个非常大的数据框,我想从中根据具体情况制作较小的数据框,但我不确定如何有效地做到这一点。我的数据框看起来像这样(但还有数百个变量):
A B C D
CAT ABC 5 7
COW DEF 5 8
DOG GHI 5 8
BAT JKL 5 8
MAN MNO 6 8
HAT PQR 6 8
我想要做的是创建一个这样的数据框:
CAT.ABC.5.7 <- subset(df, A=="CAT", B=="ABC", C==5, D==7)
COW.DEF.5.8 <- subset(df, A=="COW", B=="DEF", C==5, D==8)
等
重要的是,我的数据框标记为这样,这样我就可以快速地拉出&#34;它们后来基于我需要的值。
谢谢!
答案 0 :(得分:2)
您可以使用interaction
+ split
:
split(df, interaction(df, drop = TRUE))
## $CAT.ABC.5.7
## A B C D
## 1 CAT ABC 5 7
##
## $COW.DEF.5.8
## A B C D
## 2 COW DEF 5 8
##
## $DOG.GHI.5.8
## A B C D
## 3 DOG GHI 5 8
##
## $BAT.JKL.5.8
## A B C D
## 4 BAT JKL 5 8
##
## $MAN.MNO.6.8
## A B C D
## 5 MAN MNO 6 8
##
## $HAT.PQR.6.8
## A B C D
## 6 HAT PQR 6 8
##
如果您真的想创建单独的data.frames
,请执行:
list2env(split(df, interaction(df, drop = TRUE)), envir = .GlobalEnv)