data.frame 的子集以形成较小数据帧的列表

Subset from a data.frame to form a list of smaller dataframes

我想知道如何拆分下面的玩具 data,以便我得到一个较小的 dataf.rames 列表,每个列表都包含一对独特的 group

我的desired_output如下图。在 R 中可以进行这样的子集化吗?

因为这是一个玩具 data,我非常感谢功能性答案,其中列的名称或它们的数字可以与这个玩具不同 data

m=
  "
    y   group time outcome
    7   a     1    A
    3   a     0    B
    6   a     1    B
    5   b     0    A
    9   b     1    A
    4   b     0    B"

data <- read.table(text = m, h=T)


desired_output <-
list(
  data.frame(y =   5   , group =   "b"     , time =   0   , outcome =       "A" ),
  data.frame(y = c(7,9), group = c("a","b"), time = c(1,1), outcome = c("A","A")),
  data.frame(y = c(3,4), group = c("a","b"), time = c(0,0), outcome = c("A","A")),
  data.frame(y =   6   , group =   "a"     , time =   1   , outcome =       "B"))

[[1]]
  y group time outcome
1 5     b    0       A

[[2]]
  y group time outcome
1 7     a    1       A
2 9     b    1       A

[[3]]
  y group time outcome
1 3     a    0       A
2 4     b    0       A

[[4]]
  y group time outcome
1 6     a    1       B
 

假设问题要求将输入拆分为具有相同时间和结果的行,我们可以按如下方式使用 split。没有使用包。

split(data, data[3:4])

给予:

$`0.A`
  y group time outcome
4 5     b    0       A

$`1.A`
  y group time outcome
1 7     a    1       A
5 9     b    1       A

$`0.B`
  y group time outcome
2 3     a    0       B
6 4     b    0       B

$`1.B`
  y group time outcome
3 6     a    1       B