使用列值在新数据框中子集数据框
subset data frame in new data frame using column values
我正在尝试在不同的 data.frame 中自动对大 data.frame 进行子集化。我有类似的东西:
Type1 Type2 Type3 Info1 Info2 Info3
A 1 Z a a a
A 2 Y b b b
B 4 X c c c
A 1 Z d d d
我想为每个 Type3>Type2>Type1 创建不同的数据框
第一个数据帧(A1Z):
Type1 Type2 Type3 Info1 Info2 Info3
A 1 Z a a a
A 1 Z d d d
第二个数据帧(A2Y):
Type1 Type2 Type3 Info1 Info2 Info3
A 2 Y b b b
...
达到那个目标的最快方法是什么?谢谢!!
您可以使用 split
生成 data.frames 的列表:
> split(df, do.call(paste0, df[,1:3]))
$A1Z
Type1 Type2 Type3 Info1 Info2 Info3
1 A 1 Z a a a
4 A 1 Z d d d
$A2Y
Type1 Type2 Type3 Info1 Info2 Info3
2 A 2 Y b b b
$B4X
Type1 Type2 Type3 Info1 Info2 Info3
3 B 4 X c c c
通常建议将相关数据结构(如 data.frames)保存在单个对象(如本例中的列表)中。如果您想将这些 data.frames 分配给全局环境,您可以调查 ?list2env
.
正如 Frank 在评论中指出的那样,可能没有必要像这样拆分(尽管我们不能在没有更多信息的情况下肯定地说)。使用 dplyr,您可以使用 group_by
按这些 TypeX 列对数据进行分组,然后对每个组执行一些操作。你会这样开始:
library(dplyr)
df %>%
group_by(Type1, Type2, Type3) %>%
# ... more manipulations...
#Source: local data frame [4 x 6]
#Groups: Type1, Type2, Type3
#
# Type1 Type2 Type3 Info1 Info2 Info3
#1 A 1 Z a a a
#2 A 2 Y b b b
#3 B 4 X c c c
#4 A 1 Z d d d
我正在尝试在不同的 data.frame 中自动对大 data.frame 进行子集化。我有类似的东西:
Type1 Type2 Type3 Info1 Info2 Info3
A 1 Z a a a
A 2 Y b b b
B 4 X c c c
A 1 Z d d d
我想为每个 Type3>Type2>Type1 创建不同的数据框
第一个数据帧(A1Z):
Type1 Type2 Type3 Info1 Info2 Info3
A 1 Z a a a
A 1 Z d d d
第二个数据帧(A2Y):
Type1 Type2 Type3 Info1 Info2 Info3
A 2 Y b b b
...
达到那个目标的最快方法是什么?谢谢!!
您可以使用 split
生成 data.frames 的列表:
> split(df, do.call(paste0, df[,1:3]))
$A1Z
Type1 Type2 Type3 Info1 Info2 Info3
1 A 1 Z a a a
4 A 1 Z d d d
$A2Y
Type1 Type2 Type3 Info1 Info2 Info3
2 A 2 Y b b b
$B4X
Type1 Type2 Type3 Info1 Info2 Info3
3 B 4 X c c c
通常建议将相关数据结构(如 data.frames)保存在单个对象(如本例中的列表)中。如果您想将这些 data.frames 分配给全局环境,您可以调查 ?list2env
.
正如 Frank 在评论中指出的那样,可能没有必要像这样拆分(尽管我们不能在没有更多信息的情况下肯定地说)。使用 dplyr,您可以使用 group_by
按这些 TypeX 列对数据进行分组,然后对每个组执行一些操作。你会这样开始:
library(dplyr)
df %>%
group_by(Type1, Type2, Type3) %>%
# ... more manipulations...
#Source: local data frame [4 x 6]
#Groups: Type1, Type2, Type3
#
# Type1 Type2 Type3 Info1 Info2 Info3
#1 A 1 Z a a a
#2 A 2 Y b b b
#3 B 4 X c c c
#4 A 1 Z d d d