新手来了!所以我的数据看起来像这样:
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 3https://stackoverflow.com/questions/65936210
复制相似问题