【问题标题】:Count missing values with rowwise and add number of missing values [duplicate]按行计算缺失值并添加缺失值的数量[重复]
【发布时间】:2020-10-14 23:34:28
【问题描述】:

您好:我想向一个看起来像这样的数据框添加一列,其中包含缺失值的数量。

var1<-rnorm(100)
var2<-rnorm(100)
df<-data.frame(var1, var2)
#Set 1 missing value
df[1,1]<-NA
df[2,1]<-NA

library(tidyverse)
df
df %>% 
#I know select is somewhat superflurous in this dataframe, but I need it in my example, so I want to be sure I get ti right
  select(var1, var2) %>% 
  is.na() %>% 
#The missing values are there. 
  head()
#How do I add the counts
df %>% 
  select(var1, var2) %>% 
  rowwise() %>% 
  mutate(na=rowSums(is.na(.)))

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您不需要rowwise。只需注释该行,您的代码就可以工作。

    这行得通:

    df %>% 
      select(var1, var2) %>% 
      mutate(na = rowSums(is.na(.)))
    

    【讨论】:

    • 当我在我的基础数据上尝试这个时,我得到这个:Error: Problem with mutate()` 输入na。 x 输入 na 无法回收到尺寸 1。ℹ 输入 na 是 rowSums(is.na(.))。 ℹ 输入na 的大小必须是 1,而不是 4202。ℹ 您的意思是:na = list(rowSums(is.na(.))) 吗? ℹ 错误发生在第 1 行。` 我正在处理带标签的数据。这可能是个问题吗?
    • 可能。您能否提供一个您在问题中使用的确切数据类型的示例?几行就足够了。
    • 更正:它工作正常。我的数据框已在之前的代码中按行分组。取消分组效果很好。哇。 Rowwise() 似乎很棘手。
    • 啊,是的,这样就可以了。接得好。在使用分组时忘记取消分组非常常见。感谢您的接受。
    【解决方案2】:

    也许可以尝试使用rowwise() 确定并使用mutate() 创建Var,它将存储NA 的数量。对于行操作,您可以使用c_across() 评估所需条件。代码如下:

    library(dplyr)
    #Code
    newdf <- df %>% rowwise() %>% mutate(Var=sum(is.na(c_across(var1:var2))))
    

    输出:

    # A tibble: 100 x 3
    # Rowwise: 
          var1    var2   Var
         <dbl>   <dbl> <int>
     1 NA       0.990      1
     2 NA       0.509      1
     3 -0.248  -1.89       0
     4 -0.149  -0.230      0
     5 -0.808   0.421      0
     6  0.216  -1.36       0
     7 -0.319   1.50       0
     8 -0.0418  0.487      0
     9 -3.36   -2.37       0
    10 -0.151  -0.0478     0
    # ... with 90 more rows
    

    【讨论】:

      【解决方案3】:

      你可以直接使用rowSums:

      library(dplyr)
      df %>%  mutate(na = rowSums(is.na(select(., var1, var2))))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-11
        • 2017-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多