【问题标题】:Spit column into many columns将列拆分为多列
【发布时间】:2019-06-02 02:33:35
【问题描述】:
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,否则在行方面保持相同的结构。

【问题讨论】:

标签: r split aggregate


【解决方案1】:

在获得count 或“组”和“分数”的频率后,一个选项将是spread

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,否则在行方面保持相同的结构。

【讨论】:

  • 谢谢,但这只是输入 1 并消除了我的计数值? @akrun
  • @bvowe 不,只有filling 0 没有组合,而计数值保持不变。我可能会从您那里得到不同的输出,因为在创建数据时没有 set.seed
  • 有道理,但现在假设我想要完整的数据框'WANT',如果没有任何人,则输入 0,否则在行方面保持相同的结构,这有意义吗?
  • 我在评论中补充说,我将​​此与您回答得很好的其他问题结合起来,因此如果有更好的方法将其与该响应结合起来,请分享。
  • @bvowe 更新了帖子。但是,您能否将新信息作为第二条信息更新您的帖子。
猜你喜欢
  • 2021-03-25
  • 2014-07-28
  • 2021-01-24
  • 2013-07-12
  • 2017-05-20
  • 2013-01-23
  • 2022-01-03
相关资源
最近更新 更多