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
我想知道如何拆分下面的玩具 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