我有一个看起来像这样的数据框
> data <- data.frame(foo=c(1, 1, 2, 3, 3, 3), bar=c('a', 'b', 'a', 'b', 'c', 'd'))
> data
foo bar
1 1 a
2 1 b
3 2 a
4 3 b
5 3 c
6 3 d
Run Code Online (Sandbox Code Playgroud)
我想创建一个新列bars_by_foo,它是bar by foo的值的串联.所以新数据应如下所示:
foo bar bars_by_foo
1 1 a ab
2 1 b ab
3 2 a a
4 3 b bcd
5 3 c bcd
6 3 d bcd
Run Code Online (Sandbox Code Playgroud)
我希望以下内容有效:
p <- function(v) {
Reduce(f=paste, x = v)
}
data %>% …
Run Code Online (Sandbox Code Playgroud) 我有一个 df ,如下所示:
ID LOC
1 A
1 A
2 A
2 B
3 A
3 A
3 A
4 A
4 B
4 C
Run Code Online (Sandbox Code Playgroud)
我想做的是将 LOC 值折叠为每个 ID 一行,如果它们相同,则将其保留为一个值,所以我的输出将是:
ID LOC
1 A
2 A + B
3 A
4 A + B + C
Run Code Online (Sandbox Code Playgroud)
现在我正在使用:
group_by(ID) %>%
mutate(concat_LOC = paste0(LOC, collapse = " + "))
Run Code Online (Sandbox Code Playgroud)
它连接所有值,即使它们相同