在 R 中,将包含分组列的数据框根据分组转换为列表。


为了将包含分组列的数据框根据分组转换为列表,我们可以使用 split 函数。

例如,如果我们有一个名为 df 的数据框,其中包含一个分类列(例如 Group)和一个数值列(例如 DV),那么我们可以使用下面提到的命令,根据 Group 列中的分组将 df 转换为列表:

split(df$DV,df1$Group).

示例 1

下面的代码片段创建一个示例数据框:

Group<-sample(LETTERS[1:5],20,replace=TRUE)
Response_var<-rpois(20,5)
df1<-data.frame(Group,Response_var)
df1

创建了以下数据框

  Group Response_var
1     B           4
2     E           3
3     C           9
4     D           4
5     C           5
6     A           4
7     B           5
8     D           9
9     E           4
10    A           5
11    C           2
12    B          11
13    E           5
14    E           6
15    D           1
16    B           4
17    E           2
18    B           2
19    D           4
20    A           7

要在上面创建的数据框中,根据 Group 列将 df1 分割成列表,请将以下代码添加到上面的代码片段中:

Group<-sample(LETTERS[1:5],20,replace=TRUE)
Response_var<-rpois(20,5)
df1<-data.frame(Group,Response_var)
split(df1$Response_var,df1$Group)
$A

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 4 5 7

要在上面创建的数据框中,根据 Group 列将 df1 分割成列表,请将以下代码添加到上面的代码片段中:

Group<-sample(LETTERS[1:5],20,replace=TRUE)
Response_var<-rpois(20,5)
df1<-data.frame(Group,Response_var)
split(df1$Response_var,df1$Group)
$B

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 4 5 11 4 2

要在上面创建的数据框中,根据 Group 列将 df1 分割成列表,请将以下代码添加到上面的代码片段中:

Group<-sample(LETTERS[1:5],20,replace=TRUE)
Response_var<-rpois(20,5)
df1<-data.frame(Group,Response_var)
split(df1$Response_var,df1$Group)
$C

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 9 5 2

要在上面创建的数据框中,根据 Group 列将 df1 分割成列表,请将以下代码添加到上面的代码片段中:

Group<-sample(LETTERS[1:5],20,replace=TRUE)
Response_var<-rpois(20,5)
df1<-data.frame(Group,Response_var)
split(df1$Response_var,df1$Group)
$D

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 4 9 1 4

要在上面创建的数据框中,根据 Group 列将 df1 分割成列表,请将以下代码添加到上面的代码片段中:

Group<-sample(LETTERS[1:5],20,replace=TRUE)
Response_var<-rpois(20,5)
df1<-data.frame(Group,Response_var)
split(df1$Response_var,df1$Group)
$E

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 3 4 5 6 2

示例 2

下面的代码片段创建一个示例数据框:

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

创建了以下数据框

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

要在上面创建的数据框中,根据 Class 列将 df2 分割成列表,请将以下代码添加到上面的代码片段中:

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

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 2 6

要在上面创建的数据框中,根据 Class 列将 df2 分割成列表,请将以下代码添加到上面的代码片段中:

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

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 4 2 1 8

要在上面创建的数据框中,根据 Class 列将 df2 分割成列表,请将以下代码添加到上面的代码片段中:

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

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 3 2 4

要在上面创建的数据框中,根据 Class 列将 df2 分割成列表,请将以下代码添加到上面的代码片段中:

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

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 2 3 8 7

要在上面创建的数据框中,根据 Class 列将 df2 分割成列表,请将以下代码添加到上面的代码片段中:

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

输出

如果您将上面给出的所有代码片段作为一个程序执行,它将生成以下输出:

[1] 6 10 5 4 6 5 10

更新于:2021年11月1日

1K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告