我想用两列聚合一个data.frame:在一个列中我有“ num”,这是一个标识符编号,在另一列中我有文本。重要的是,聚合文本的各个部分之间必须有空格。我的代码是这样的:
data_aggr <- aggregate(
x = data_aggr,
FUN = paste,
by = list(data_aggr$num)
)
我用FUN = paste(collapse = " ")
和
FUN = paste,
collapse = " ",
但这不起作用。我该怎么做?
答案 0 :(得分:1)
聚合可用于将具有相同num值的行粘贴在一起,如下所示:
data_aggr <- data.frame(num=c(1,1,1,2,2), letters=letters[1:5])
aggregate(data_aggr$letters, list(data_aggr$num), FUN=paste, collapse= " ")
# Group.1 x
# 1 1 a b c
# 2 2 d e
答案 1 :(得分:0)
一个dplyr解决方案,其想法是创建一个具有行号的新列,以便能够对每一行进行操作。
> library(dplyr)
> df.ask <- data.frame('Num' = 1:10,
+ 'Text' = letters[1:10])
>
> df.ask %>%
+ mutate(row_num = row_number()) %>%
+ group_by(row_num) %>%
+ mutate(together = paste(Num, Text, collapse = ' ')) %>%
+ ungroup() %>%
+ select(-row_num)
# A tibble: 10 x 3
Num Text together
<int> <fct> <chr>
1 1 a 1 a
2 2 b 2 b
3 3 c 3 c
4 4 d 4 d
5 5 e 5 e
6 6 f 6 f
7 7 g 7 g
8 8 h 8 h
9 9 i 9 i
10 10 j 10 j