【问题标题】:r dplyr summarize and spread : Calculate % of row (Like Excel PivotTable)r dplyr 总结和传播:计算行的百分比(如 Excel 数据透视表)
【发布时间】:2017-11-13 04:30:07
【问题描述】:

我是一个新的 R 程序员,可能遇到一个非常简单的问题。

我有一个 dplyr 总结/传播 sn-p 如下:

enroll_data_eth_sum <- group_by(enroll_data_distinct, EMISEthnicity) %>% 
  summarize(freq = n()
  ) %>% 
  spread(EMISEthnicity, freq)

生成此表:

我需要的是该表是行的百分比......而不是值。我已经尝试了一些东西(比如 freq = (n=n()) / sum(n)),但这只是给出了所有的 1(经过反思可能是正确的)。

有什么想法吗?我知道这很简单...谢谢!!

约翰

更新:我根据 Cedric 的帖子尝试了以下内容:

enroll_data_eth_sum <- group_by(enroll_data_distinct, EMISEthnicity) 
 %>% 
 summarize(n = n()) %>% 
 mutate(freq = n / sum(n)) %>% 
 spread(EMISEthnicity, freq)

但这给了我这张桌子:

这些值是正确的...但我需要全部放在一行上。 ??

【问题讨论】:

  • 嗨 Cedric,我试过了……但是 mtcars 代码给了我 7 行(每个种族总和一个)和 8 列(每个种族一个)。我只需要一行...就像 Excel "% of Row" 计算。
  • 对不起,你得到了正确的答案真好!
  • @JohnLaPlante 如果 gatsky 的回答有帮助,请考虑通过单击答案左侧的复选标记来接受它作为答案。

标签: r


【解决方案1】:

只要去掉n列,例如:

enroll_data_eth_sum <- group_by(enroll_data_distinct, EMISEthnicity) %>% 
 summarize(n = n()) %>% 
 mutate(freq = n / sum(n)) %>%
 select(-n) %>%
 spread(EMISEthnicity, freq)

【讨论】:

  • 完美!!而已。非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
相关资源
最近更新 更多