【问题标题】:Pick groups that have at least one non-missing value in R选择在 R 中至少有一个非缺失值的组
【发布时间】:2020-11-19 04:04:27
【问题描述】:

我有一个纵向数据,我想推断其中一个变量。我需要按组织的 ID 对数据进行分组,并保留那些对该变量(预算)至少具有一个非缺失值的组/组织。这意味着由于数据的纵向性质,应该单独推断组织。我使用了许多不同的功能和代码,但没有一个起作用。我认为它应该工作的最简单的方法之一如下:

DataX %>%
group_by(orgcode) %>%
filter(!is.na(budget) >= 1) %>%
mutate(budget=na.spline(budget))

问题是过滤器只保留非缺失的行,没有考虑分组,所以它不能执行外推。你知道我做错了什么吗?非常感谢!

【问题讨论】:

    标签: r filter grouping extrapolation longitudinal


    【解决方案1】:

    如果我们有一个可重现的例子会更好,但让我们为您的数据创建一个玩具版本:

    DataX <- data.frame(orgcode = rep(LETTERS[1:5], each = 3),
                        budget  = c(NA, 21000, 22000,
                                    30000, NA, 40000,
                                    NA, NA, NA,
                                    12000, 15000, 14000,
                                    NA, NA, NA))
    
    DataX
    #>    orgcode budget
    #> 1        A     NA
    #> 2        A  21000
    #> 3        A  22000
    #> 4        B  30000
    #> 5        B     NA
    #> 6        B  40000
    #> 7        C     NA
    #> 8        C     NA
    #> 9        C     NA
    #> 10       D  12000
    #> 11       D  15000
    #> 12       D  14000
    #> 13       E     NA
    #> 14       E     NA
    #> 15       E     NA
    

    我们可以看到具有orgcode C 和 E 的组织具有所有NA 值,应该被删除。我们可以通过使用虚拟变量来确定每个组是否为all(is.na(budget)) 并对其进行过滤:

    library(dplyr)
    
    DataX %>% 
      group_by(orgcode) %>% 
      mutate(allNA = !all(is.na(budget))) %>%
      filter(allNA) %>%
      select(-allNA)
    
    #> # A tibble: 9 x 2
    #> # Groups:   orgcode [3]
    #>   orgcode budget
    #>   <fct>    <dbl>
    #> 1 A           NA
    #> 2 A        21000
    #> 3 A        22000
    #> 4 B        30000
    #> 5 B           NA
    #> 6 B        40000
    #> 7 D        12000
    #> 8 D        15000
    #> 9 D        14000
    

    reprex package (v0.3.0) 于 2020 年 7 月 29 日创建

    【讨论】:

    • 第一次在这里提问!下次我一定会为我的数据创建一个玩具版本。非常感谢你这样做!您的代码有效!
    • 哦等等!我刚刚注意到代码运行没有问题,但所有缺失的值仍然存在:/
    • @MarjanDavoodi 你的意思是所有 NA 的组织代码仍然存在,还是具有一些缺失值的组织代码仍然存在 NA?
    • 有一些缺失值的组织仍然有 NA。
    • 我的错!我忘了加上外推线!对于那个很抱歉。我准备好了!
    猜你喜欢
    • 2017-11-20
    • 2019-08-24
    • 2021-06-08
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2017-10-20
    • 2019-07-18
    相关资源
    最近更新 更多