使用基于唯一ID的公共值填充数据框中的NA值

时间:2013-09-24 04:38:22

标签: r

我有一个大数据框,部分内容如下:

   id carbon nitrogen sulfer
1   1     NA       NA     NA
2   1     NA       NA     NA
3   1      5        6     78
4   2     NA       NA     NA
5   2     NA       NA     NA
6   2      8        8     67
7   3     NA       NA     NA
8   3     NA       NA     NA
9   3     NA       NA     NA
10  3      7        9     55

我是否有办法填充列中的NA值(示例碳),其中一个值与id相同。例如,如果我们采用id == 1,则列碳的值为5,需要将NA替换为5。 我有近200列填充像这样。

非常感谢任何有关自动化的帮助。

2 个答案:

答案 0 :(得分:1)

你没有真正澄清@flodel在评论中指出的问题。无论如何,给出示例数据中的模式,即除了最后一个id 中的之外,所有碳氮硫的值都丢失了,那么你可以试试这个:

library(zoo)
na.locf(df, na.rm = FALSE, fromLast = TRUE)

#    id carbon nitrogen sulfer
# 1   1      5        6     78
# 2   1      5        6     78
# 3   1      5        6     78
# 4   2      8        8     67
# 5   2      8        8     67
# 6   2      8        8     67
# 7   3      7        9     55
# 8   3      7        9     55
# 9   3      7        9     55
# 10  3      7        9     55

答案 1 :(得分:0)

试试这个,我希望你需要它。如果没有更新,我更新结果。顺便说一下,这已被问过几次了。

myFunc <- function(value) {
  if (value[1] == 1) {
    value[2] = 5;
    value[3] = 5;
    value[4] = 5 
  }
  # here you put you're if's
}

apply(data, 1, myFunc)