在 R 中将带有分组列的数据框转换为基于组的列表。

r programmingserver side programmingprogramming

要将带有分组列的数据框转换为基于组的列表,我们可以使用 split 函数。

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

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

相关文章