我想基于现有的dataframe
创建一个新的paste
。就像标题所暗示的,如果另一列中的值相等,我想DF <- data.frame(
ID = c(1,2,2,3,3,3,4,4,4,4),
value = c("I","ate","cereals","for","breakfast","it","was","delicious","!!!",":)"))
在某一列中的所有字符串值。
由于我的写作能力很差,我想我不太清楚这是什么意思。为了澄清,我创建了一个示例。
现有数据框
如果我有这样的东西:
DF2 <- data.frame(
ID = c(1,2,3,4),
value = c(paste("I"), paste("ate","cereals"), paste("for","breakfast","it"), paste("was","delicious","!!!",":)")))
新数据框
我想创建这样的东西:
value
来自列paste
的所有字符串在列ID
中具有相同值时,将使用dplyr
合并。我在构建可以做到这一点的功能时遇到了麻烦。你能帮我吗?
我对data.table
或async function asyncMap(array, callback) {
let results = [];
for (let index = 0; index < array.length; index++) {
const result = await callback(array[index], index, array);
results.push(result);
}
return results;
}
都很满意。
答案 0 :(得分:2)
在dplyr
中,您可以将group_by
与summarise
一起使用
DF %>%
group_by(ID) %>%
summarise(value = paste(value, collapse = " "))
## A tibble: 4 x 2
# ID value
# <dbl> <chr>
#1 1. I
#2 2. ate cereals
#3 3. for breakfast it
#4 4. was delicious !!! :)
答案 1 :(得分:1)
您只能使用串联功能来group_by(ID)
和summarise
。在这里,我将str_c
与collapse
参数一起使用。
library(tidyverse)
DF <- data.frame(
ID = c(1, 2, 2, 3, 3, 3, 4, 4, 4, 4),
value = c("I", "ate", "cereals", "for", "breakfast", "it", "was", "delicious", "!!!", ":)")
)
DF %>%
group_by(ID) %>%
summarise(value = str_c(value, collapse = " "))
#> # A tibble: 4 x 2
#> ID value
#> <dbl> <chr>
#> 1 1 I
#> 2 2 ate cereals
#> 3 3 for breakfast it
#> 4 4 was delicious !!! :)
由reprex package(v0.2.0)于2018-08-26创建。