我有一个这样的表:
<表类>
col1
col2
col3
tbody><<tr>x 1 4 x 2 5 x 3 6 y1 4 y2 5 y3 6 表类>
使用dplyr返回值列表的解决方案(不确定您是否想要字符串或列表,但您的示例中的括号使我认为您想要列表…)
library(dplyr)
df1 %>%
group_by(col1) %>%
summarise(across(, list))
可以吗?
library(dplyr)
library(stringr)
df %>% group_by(col1) %>% summarise(col2 = str_c('[',toString(col2),']'))
# A tibble: 2 x 2
col1 col2
<chr> <chr>
1 x [1, 2, 3]
2 y [1, 2, 3]
您可以使用tidyr::pivot_wider
library(tidyr)
df %>%
pivot_wider(id_cols = col1,
values_from = -col1,
values_fn = list)
默认的values_fn
是list
,所以从技术上讲这里不需要它,但是为了抑制警告消息,我明确地设置了它。
使用aggregate
frombase R
aggregate(.~ col1, df1, list)
col1 col2 col3
1 x 1, 2, 3 4, 5, 6
2 y 1, 2, 3 4, 5, 6
数据df1 <- structure(list(col1 = c("x", "x", "x", "y", "y", "y"), col2 = c(1L,
2L, 3L, 1L, 2L, 3L), col3 = c(4L, 5L, 6L, 4L, 5L, 6L)),
class = "data.frame", row.names = c(NA,
-6L))