如何在R中的数据帧中将多种类型的值替换为NAs

如何在R中的数据帧中将多种类型的值替换为NAs,r,missing-data,R,Missing Data,我有一个数据框,其中需要用NAs替换多种类型的值,而具有这些值的其他列是要保留的有效数据。比如说, >df<-data.frame( x1=c("1999-09-09","2013-01-02","2013-06-08","1999-09-09","2013-06-08","2013-06-08"), x2=c(1,2,3,4,5,9), x3=c(7,8,9,9,12,9), x4=c(78,88,99,9,12,999) ) >df

我有一个数据框,其中需要用NAs替换多种类型的值,而具有这些值的其他列是要保留的有效数据。比如说,

>df<-data.frame(
  x1=c("1999-09-09","2013-01-02","2013-06-08","1999-09-09","2013-06-08","2013-06-08"),
  x2=c(1,2,3,4,5,9),
  x3=c(7,8,9,9,12,9),
  x4=c(78,88,99,9,12,999)
  )
>df
          x1 x2 x3  x4
1 1999-09-09  1    7  78
2 2013-01-02  2    8  88
3 2013-06-08  3    9  99
4 1999-09-09  4    9   9
5 2013-06-08  5   12  12
6 2013-06-08  9    9 999
dfdf x1x2x3x4 1 1999-09-09 1 7 78 2 2013-01-02 2 8 88 3 2013-06-08 3 9 99 4 1999-09-09 4 9 9 5 2013-06-08 5 12 12 6 2013-06-08 9 9 999 其中“1999-09-09”,9和99是x1、x2和x4的缺失值,而9是x3的有效观测值。有人知道实现这一点的最佳方式吗。我有将近100个数据帧,我想为此编写一个简单的函数。如果我错过了
miss请尝试以下操作:

miss<-c("1999-09-09", 9, NA,99)
data.frame(Map(
 function(x,y) {x[x==y] <- NA; x;},
 df,
 miss
))
未命中
          x1 x2 x3  x4
1       <NA>  1  7  78
2 2013-01-02  2  8  88
3 2013-06-08  3  9  NA
4       <NA>  4  9   9
5 2013-06-08  5 12  12
6 2013-06-08 NA  9 999