新手来了!所以我的数据看起来像这样:
rater1 1
rater1 2
rater1 3
rater2 2
rater2 3
rater2 1
我希望输出如下所示:
点评者1 |1| 2| 3
点评者2 |2| 3| 1
我曾尝试使用groupby()函数。但它似乎不起作用。
有谁有什么想法吗?
发布于 2021-01-28 20:38:18
dplyr
解决方案:
df %>%
group_by(rater) %>%
summarise(ratings = paste0(ratings, collapse = ","))
# A tibble: 2 x 2
rater ratings
* <chr> <chr>
1 rater1 1,2,3
2 rater2 1,2,3
如果您不希望在评级之间有,
,只需在paste0
的collapse
参数中将","
替换为" "
。
数据:
df <- data.frame(
rater = c(rep("rater1",3), rep("rater2",3)),
ratings = c(rep(c(1,2,3), 2))
)
发布于 2021-04-03 06:26:06
除了Chris Ruehlemanns回答。以下是针对您在评论中的请求的解决方案:使用lead
slice
library(dplyr)
df %>%
group_by(rater) %>%
mutate(rating1 = ratings,
rating2 = lead(ratings),
rating3 = lead(ratings, 2)) %>%
slice(which(row_number() %% 3 == 1)) %>%
select(-ratings)
输出:
rater rating1 rating2 rating3
<chr> <dbl> <dbl> <dbl>
1 rater1 1 2 3
2 rater2 1 2 3
https://stackoverflow.com/questions/65936210
复制相似问题