使用'功能'创建自定义数据框架

时间:2015-11-24 18:04:21

标签: r function dataframe

我有一个非常大的数据框,我想从中根据具体情况制作较小的数据框,但我不确定如何有效地做到这一点。我的数据框看起来像这样(但还有数百个变量):

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;它们后来基于我需要的值。

谢谢!

1 个答案:

答案 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)