在R
中,我需要折叠列以形成具有数字列表类型的另一列。
就像我们将数字列表定义为l = c(1,2,3)
df <- read.table(text = "X Y
a 26
a 3
a 24
b 8
b 1
b 4
", header = TRUE)
我正在尝试使用dplyr
,但它给了我字符列表列
> df %>% group_by(X) %>% summarise(lst= paste0(Y, collapse = ","))
# A tibble: 2 x 2
X lst
<fct> <chr>
1 a 26,3,24
2 b 8,1,4
最佳答案
按X
分组,然后将Y
汇总为列表
library(dplyr)
out <- df %>%
group_by(X) %>%
summarise(Y = list(Y))
out
# A tibble: 2 x 2
# X Y
# <fct> <list>
#1 a <int [3]>
#2 b <int [3]>
Y
列现在看起来像这样
out$Y
#[[1]]
#[1] 26 3 24
#
#[[2]]
#[1] 8 1 4
nest
似乎是另一种选择,但这会导致 tibbles
的列表列(我认为不是你想要的)
df %>%
group_by(X) %>%
nest()
# A tibble: 2 x 2
# X data
# <fct> <list>
#1 a <tibble [3 × 1]>
#2 b <tibble [3 × 1]>
关于R折叠列以形成数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54706254/