【问题标题】:r Copy values from a cell above the missing value [duplicate]r从缺失值上方的单元格中复制值[重复]
【发布时间】:2019-03-11 02:59:21
【问题描述】:

我有一个大型数据集,其较短的版本如下

 Col1         Col2
 0            1
 1            0.9971
 4            NA
 6            NA
 7            NA
 14           NA
 18           0.9951
 22           NA
 25           NA
 46           0.9941
 57           NA
 59           NA
 60           0.9921

对于 Col2 中的那些缺失值,我希望将 NA 替换为同一列 Col2 中高于它的值。最终的数据集如下所示。

    Col1         Col2
 0            1
 1            0.9971
 4            0.9971
 6            0.9971
 7            0.9971
 14           0.9971
 18           0.9951
 22           0.9951
 25           0.9951
 46           0.9941
 57           0.9941
 59           0.9941
 60           0.9921

【问题讨论】:

  • 如果您愿意使用tidyverse,您可以使用df %>% arrange(Col1) %>% fill(Col2),这将进行向下填充。
  • @brittenb,成功了

标签: r replace missing-data


【解决方案1】:

在包zoo中有一个函数na.locf(NA最后的观察结转)可以做到这一点:

> zoo::na.locf(df)
   Col1   Col2
1     0 1.0000
2     1 0.9971
3     4 0.9971
4     6 0.9971
5     7 0.9971
6    14 0.9971
7    18 0.9951
8    22 0.9951
9    25 0.9951
10   46 0.9941
11   57 0.9941
12   59 0.9941
13   60 0.9921

【讨论】:

  • @Cbraun。太棒了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 2015-01-17
相关资源
最近更新 更多