如何在R中根据字符列的水平创建子集?


在 R 编程中,大多数具有字符串值的列可以用字符数据类型或因子数据类型表示。例如,如果我们有一列 Group,它有四个唯一值 A、B、C 和 D,那么它可以是字符或因子,具有四个水平。如果我们想要获取这些列的子集,则可以使用子集函数。请查看下面的示例。

考虑以下数据框 -

示例

set.seed(888)
Grp<-sample(c("A","B","C"),20,replace=TRUE)Age<-sample(21:50,20)
df1<-data.frame(Grp,Age)
df1

输出

   Grp  Age
1   A   35
2   C   40
3   C   48
4   C   46
5   C   36
6   C   33
7   B   47
8   A   45
9   B   43
10  B   37
11  B   30
12  A   24
13  C   39
14  C   50
15  C   25
16  A   34
17  B   49
18  A   44
19  C   38
20  B   26

str(df1) 'data.frame': 20 obs. of 2 variables

$ Grp: chr "A" "C" "C" "C" ...
$ Age: int 35 40 48 46 36 33 47 45 43 37 ...

根据 Grp 列值 A 和 C 获取 df1 的子集 -

示例

subset(df1, Grp %in% c("A","C"))

输出

Grp Age
1 A 35
2 C 40
3 C 48
4 C 46
5 C 36
6 C 33
8 A 45
12 A 24
13 C 39
14 C 50
15 C 25
16 A 34
18 A 44
19 C 38

让我们看看另一个例子 -

示例

 实时演示

Class<-sample(c("First","Second","Third","Fourth"),20,replace=TRUE)
Score<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Class,Score)
df2

输出

   Class  Score
1  First   10
2  First   3
3  First   1
4  First   7
5  First   1
6  Third   4
7  First   3
8  First   3
9  Second  2
10 First   8
11 Fourth  1
12 Third   6
13 First   6
14 Second  1
15 First   8
16 Fourth  4
17 Third   7
18 Fourth  4
19 Third   7
20 Fourth  1

str(df2) 'data.frame': 20 obs. of 2 variables

$ Class: chr "First" "Third" "Second" "First" ...
$ Score: int 1 4 9 8 9 10 2 8 5 8 ...

根据 Class 列值 First 和 Fourth 获取 df2 的子集 -

示例

subset(df2, Class %in% c("First","Fourth"))

输出

Class Score
1 First 1
4 First 8
5 First 9
6 Fourth 10
7 Fourth 2
9 Fourth 5
10 Fourth 8
11 Fourth 8
13 Fourth 7
14 Fourth 10
15 First 7
16 Fourth 10
17 Fourth 4
19 First 2
20 First 10

更新于: 2020年10月9日

1K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告