data = data.frame("id"=1:40,
"group"=1:5,
"score"=sample(1:4,10,r=T))
table(data[which(data$group==1),]$score)
WANT=data.frame("group"=1:5,
"score1"=c(0,4,0,4,0),
"score2"=c(4,0,0,4,0),
"score3"=c(0,4,0,4,0),
"score4"=c(0,0,4,4,0))
在数据中,我有“得分”,但我想为每个“得分”分别创建一列,然后按如下所示进行汇总。
我还希望拥有完整的数据帧“ WANT”,如果没有人,则将0设置为0,否则在行方面保持相同的结构。
答案 0 :(得分:0)
通过“组”和“得分”获得spread
或频率后,选项为count
library(tidyverse)
data %>%
count(group, score) %>%
mutate(score = str_c("score", score)) %>%
spread(score, n, fill = 0)
如果我们想使用count
之后的所有组合,请使用complete
data %>%
count(group, score) %>%
complete(group, score, fill = list(n = 0))
我还希望拥有完整的数据帧“ WANT”,如果没有人,则将0设置为0,否则在行方面保持相同的结构。