【问题标题】:Fill missing values from bottom to up从下往上填充缺失值
【发布时间】:2013-11-16 13:22:49
【问题描述】:

问题示例

           date          X         Y
 2012-07-05 00:01:19   0.0122     NA
 2012-07-05 03:19:34   0.0121     NA
 2012-07-05 03:19:56   0.0121   0.027
 2012-07-05 03:20:31   0.0121   0.027
 2012-07-05 04:19:56   0.0121   0.028
 2012-07-05 04:20:31   0.0121   0.028
 2012-07-05 04:20:50   0.0121   0.028

如何在Y 列中用0.027 填充NA

【问题讨论】:

    标签: r missing-data na


    【解决方案1】:

    您可以使用“动物园”包中的na.locf

    library(zoo)
    na.locf(mydf, fromLast=TRUE)
    #        X     Y
    # 1 0.0122 0.027
    # 2 0.0121 0.027
    # 3 0.0121 0.027
    # 4 0.0121 0.027
    # 5 0.0121 0.028
    # 6 0.0121 0.028
    # 7 0.0121 0.028
    

    “mydf”在哪里:

    mydf <- structure(list(X = c(0.0122, 0.0121, 0.0121, 0.0121, 0.0121, 
        0.0121, 0.0121), Y = c(NA, NA, 0.027, 0.027, 0.028, 0.028, 0.028)), 
       .Names = c("X", "Y"), class = "data.frame", row.names = c(NA, -7L))
    
    mydf
    #        X     Y
    # 1 0.0122    NA
    # 2 0.0121    NA
    # 3 0.0121 0.027
    # 4 0.0121 0.027
    # 5 0.0121 0.028
    # 6 0.0121 0.028
    # 7 0.0121 0.028
    

    【讨论】:

    • 既然没有其他方法,用na.locf就够了。
    【解决方案2】:

    这是base R中的一个解决方案。如果dat是您的数据框的名称,您可以尝试:

    within(dat, Y[is.na(Y)] <- na.omit(Y)[1])
    

    【讨论】:

      猜你喜欢
      • 2012-10-25
      • 2019-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多