【问题标题】:replacing missing value with non-values in grouped data using tidyverse使用 tidyverse 将分组数据中的缺失值替换为非值
【发布时间】:2020-05-18 19:20:18
【问题描述】:

对于每个 id,我试图用可用的数据替换缺失值。

library(tidyverse)
df <- data.frame(id=c(1,1,1,2,2,2,3), 
                 a=c(NA, NA, 10, NA, 12, NA, 10),
                 b=c(10, NA, NA, NA, 13,NA, NA))
> df
  id  a  b
1  1 NA 10
2  1 NA NA
3  1 10 NA
4  2 NA NA
5  2 12 13
6  2 NA NA
7  3 10 NA

我试过了:

df %>% 
  dplyr::group_by(id) %>%
  dplyr::mutate_at(vars(a:b), fill(., direction="up"))

并得到以下错误:

Error: 1 components of `...` had unexpected names.

We detected these problematic arguments:
* `direction`

Did you misspecify an argument?

期望的输出:

  id  a  b
1  1 10 10
2  1 10 NA
3  1 10 NA
4  2 12 13
5  2 12 13
6  2 12 13
7  3 10 NA

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    我们不会将fillmutate_at 一起使用。根据?fill

    data - 一个数据框。和

    ... - 列的选择。如果为空,则不会发生任何事情。您可以提供裸变量名称,使用 x:z 选择 x 和 z 之间的所有变量,使用 -y 排除 y。 F

    library(dplyr)
    library(tidyr)
    df %>%
        group_by(id) %>%
        fill(a:b, .direction = 'up')
    # A tibble: 7 x 3
    # Groups:   id [3]
    #     id     a     b
    #  <dbl> <dbl> <dbl>
    #1     1    10    10
    #2     1    10    NA
    #3     1    10    NA
    #4     2    12    13
    #5     2    12    13
    #6     2    NA    NA
    #7     3    10    NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 2018-02-17
      • 1970-01-01
      • 2014-06-13
      相关资源
      最近更新 更多