>R-新手在这里! 所以我有这样的数据:
评分器1 1
评分员1 2
评分员1 3
评分器2 2
评分器2 3
评分器2 1
我希望输出看起来像这样:
|评分者 1 |1| 2| 3|
|评分器 2 |2| 3| 1|
我试过使用 groupby() 函数。但它似乎不起作用。
有人有什么想法吗?
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
如果您不希望在评级之间,
,只需将","
替换为collapse
参数中的" "
即可paste0
。
数据:
df <- data.frame(
rater = c(rep("rater1",3), rep("rater2",3)),
ratings = c(rep(c(1,2,3), 2))
)
除了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