【问题标题】:na.locf function is changing data frame values from int to char in R?na.locf 函数正在将 R 中的数据帧值从 int 更改为 char?
【发布时间】:2018-09-09 17:04:01
【问题描述】:

我有一个大型数据框,其中有一些缺失值,我正在尝试填充。我试图使用 na.locf 函数,但它将数据框中的所有值都更改为字符。我的数据是死亡率数据,而 NA 仅在没有记录死亡的行中(前 6 列在那里,但其余列有 NA)。我的df被称为“城市”。有没有更好的方法来填充数据?我确实有一些在其他城市没有记录数据 20-150 周的情况。显然我不想要这些 na.locf。

City <- na.locf(City)

【问题讨论】:

    标签: r locf


    【解决方案1】:

    它将您的数据框强制转换为矩阵。而是这样做:

    City[] <- lapply(City, na.locf0)
    

    或者如果您只想将其应用于 jx 中的列(可能是整数位置的向量、逻辑向量或列名),那么:

    City[jx] <- lapply(City[jx], na.locf0)
    

    或者不覆盖将City分配给City2,然后使用上面的te对City2进行操作,或者使用单行:

    City2 <- replace(City, TRUE, lapply(City, na.locf0))
    

    City2 <- replace(City, jx, lapply(City[jx], na.locf0))
    

    【讨论】:

    • 这更正了列,谢谢!对于连续的 NA 行,使用“na.interpolation”而不是“na.locf0”会更好吗?
    • 您可以找到 na.aggregate、na.approx、na.fill、na.locf、na.spline、na.StructTS 和 na.trim。一个并不比另一个更好,但更重要的是什么是合适的。 na.approx 将进行线性插值,而 na.spline 将进行样条插值,通常是 na.locf 的两种替代方案。有关更多信息,请参阅动物园文档。
    【解决方案2】:

    考虑使用tidyr::fill() 而不是na.locf()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-19
      • 2016-04-17
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多