【问题标题】:Replacing missing character values by the character in the row below using R [duplicate]使用R [重复]用下面行中的字符替换缺失的字符值
【发布时间】:2017-09-10 05:19:39
【问题描述】:

我有一个带有<NA> 的字符列,我想用行下方的字符替换它。下面是一个例子:

df12 <-
  structure(
    list(Reg = structure(c(NA, 1L, 1L, NA, 1L, 1L, NA, 2L, 2L, NA, 2L, 2L, NA, 2L, 2L)
                         , .Label = c("A", "B"), class = "factor")), 
    .Names = "Reg", row.names = c(NA, -15L), class = "data.frame")

df12
Reg
1  <NA>
2     A
3     A
4  <NA>
5     A
6     A
7  <NA>
8     B
9     B
10 <NA>
11    B
12    B
13 <NA>
14    B
15    B

library(dplyr)

所需输出

1     A
2     A
3     A
4     A
5     A
6     A
7     B
8     B
9     B
10    B
11    B
12    B
13    B
14    B
15    B

【问题讨论】:

    标签: r dplyr data.table data-manipulation


    【解决方案1】:

    我们可以通过指定.direction来使用fill

    library(dplyr)
    library(tidyr)
    df12 %>%
        fill(Reg, .direction = "up")
    

    【讨论】:

      【解决方案2】:

      另一个使用na.locf 更快且严格设计用于用最新的无缺失值填充缺失的选项:

      zoo::na.locf(df12,fromLast=TRUE)
      
      #    Reg
      # 1    A
      # 2    A
      # 3    A
      # 4    A
      # 5    A
      # 6    A
      # 7    B
      # 8    B
      # 9    B
      # 10   B
      # 11   B
      # 12   B
      # 13   B
      # 14   B
      # 15   B
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-21
        • 2021-07-06
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多