r - 在 R 中,如何按多列中的因素拆分/子集数据框?

标签 r

我的数据如下:

ID   Test Type       Subject  Marks
1    Unit test 1     English   85
2    Unit test 1     English   75
3    Unit test 1     English   78
1    Unit test 2     English   85
2    Unit test 2     English   75
3    Unit test 2     English   78
1    Unit test 1     Maths     78
2    Unit test 1     Maths     79
3    Unit test 1     Maths     98
1    Unit test 2     Maths     95
2    Unit test 2     Maths     98
3    Unit test 2     Maths     88

我想按“测试类型”和“主题”拆分数据。我应该使用什么函数? 我想要的结果是:

data frame 1:
    ID   Test Type       Subject  Marks
    1    Unit test 1     English   85
    2    Unit test 1     English   75
    3    Unit test 1     English   78

data frame 2:
    ID   Test Type       Subject  Marks
    1    Unit test 2     English   85
    2    Unit test 2     English   75
    3    Unit test 2     English   78

data frame 3 :
    ID   Test Type       Subject  Marks
    1    Unit test 1     Maths     78
    2    Unit test 1     Maths     79
    3    Unit test 1     Maths     98

data frame 4:
    ID   Test Type       Subject  Marks
    1    Unit test 2     Maths     95
    2    Unit test 2     Maths     98
    3    Unit test 2     Maths     88

最佳答案

您可以使用split()(感谢 DrDom 的改进)。

split(df, list(df$Test.Type, df$Subject))
# $`Unit test 1.English`
#   ID   Test.Type Subject Marks
# 1  1 Unit test 1 English    85
# 2  2 Unit test 1 English    75
# 3  3 Unit test 1 English    78
# 
# $`Unit test 2.English`
#   ID   Test.Type Subject Marks
# 4  1 Unit test 2 English    85
# 5  2 Unit test 2 English    75
# 6  3 Unit test 2 English    78
# 
# $`Unit test 1.Maths`
#   ID   Test.Type Subject Marks
# 7  1 Unit test 1   Maths    78
# 8  2 Unit test 1   Maths    79
# 9  3 Unit test 1   Maths    98
# 
# $`Unit test 2.Maths`
#    ID   Test.Type Subject Marks
# 10  1 Unit test 2   Maths    95
# 11  2 Unit test 2   Maths    98
# 12  3 Unit test 2   Maths    88

其中df是原始数据。

df <- structure(list(ID = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 
2L, 3L), Test.Type = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 1L, 
1L, 1L, 2L, 2L, 2L), .Label = c("Unit test 1", "Unit test 2"), class = "factor"),
    Subject = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
    2L, 2L, 2L), .Label = c("English", "Maths"), class = "factor"), 
    Marks = c(85L, 75L, 78L, 85L, 75L, 78L, 78L, 79L, 98L, 95L, 
    98L, 88L)), .Names = c("ID", "Test.Type", "Subject", "Marks"
), class = "data.frame", row.names = c(NA, -12L))

关于r - 在 R 中,如何按多列中的因素拆分/子集数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29247948/

相关文章:

r - 从 agrep 中提取子字符串匹配

以 NA 作为环境凸包外区域的光栅文件

r - 在多个数处分割向量

string - R:引用数据框将列名作为变量返回,而不是字符串(对于子集)

r - ggplot2 多边形 -> 错误 : Discrete value supplied to continuous scale

r - 根据列表对列进行排序,然后对数据框中的另一列进行排序

r - 按字符列名称过滤数据框(在 dplyr 中)

r - 当ggplot2中的stat ='count'时,如何手动更改条形图的填充颜色

r - R Chi平方事后检验

R、两边闭断