【问题标题】:counting grouped missing values in R计算 R 中的分组缺失值
【发布时间】:2017-07-27 08:37:33
【问题描述】:

对不起,这个问题很简单

我是 R 新手,我想按组计算 some_column 列中缺失值的数量,这些值在我的数据集中替换为 0 值,然后获取最大为 @987654323 的组@ 值。这样做(使用包dplyr):

missing_data <- group_by(some_data,some_group, count=sum(some_column==0))

但奇怪的是,我在 count 列中得到了整个数据集的相同数字,就好像数据集没有分组一样。有人有想法

好的,我知道了

missing_data %>% group_by(some_group) %>% summarise(count=sum(some_column==0))

【问题讨论】:

  • 你看过 dplyr 介绍教程吗?
  • @docendodiscimus 感谢您的回复。是的,这就是我尝试发布内容的原因。我错了吗?
  • 我认为你仍然缺少对最基本的 dplyr 函数的理解,即 group_by、mutate、summarise、filter 和 select。如果您了解这些,您已经可以做很多事情并且可能会解决您的问题
  • @docendodiscimus 感谢您的教学邀请,以便更好地理解。我只是意识到我复制粘贴了我运行的错误命令。我在这个意义上编辑了我的帖子,这并不能免除我在dplyr 文档中的进一步说明;)
  • 您的尝试表明您还没有理解必须首先对数据进行分组(使用 group_by),然后然后计算 NA 或 0 的数量(使用 mutate 或 summarise )。您要做的是创建一个对所有行都相同的分组变量“count”,因为在该步骤之前您的数据尚未分组

标签: r group-by missing-data


【解决方案1】:

dplyr 动词保持一致:

missing_data <- filter(some_data, some_column == 0) %>%
  group_by(some_group) %>%       
  summarise(count = n()) %>%
  arrange(desc(count))

【讨论】:

    【解决方案2】:

    这里是使用 mtcars 数据框的示例

    count_zero<-function(x){
      sum(x==0,na.rm=TRUE)
    }
    aggregate(mtcars,list(cyl=(mtcars$cyl)),count_zero)
    

    【讨论】:

    • 正如我在帖子中所说,我正在寻找 0
    • 应该是这样的:library(magrittr);aggregate(airquality,list(Month=airquality$Month),. %&gt;% equals(0) %&gt;% sum(na.rm=TRUE)) 但在这个数据集中,你的输出中只有零,因为输入中没有零
    • 你好,我编辑了这个例子,但老实说你可以找任何你想要的,它没有太大变化,你只需要改变辅助功能
    【解决方案3】:

    答案终于来了

    missing_data %>% group_by(some_group) %>% summarise(count=sum(some_column==0)) %>% arrange(desc(count))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多