Как заменить значения нескольких типов на NA в кадре данных в R
У меня есть фрейм данных, где несколько типов значений должны быть заменены на NA, в то время как некоторые другие столбцы с этими значениями являются действительными данными для хранения. Например,
>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
Где "1999-09-09", 9 и 99 - пропущенные значения для x1,x2 и x4, в то время как 9 - действительные наблюдения для x3. Кто-нибудь знает, как лучше это реализовать? У меня есть около 100 фреймов данных, и я хочу написать простую функцию для этой цели. Если у меня есть miss<-c("1999-09-09", 9, "",99)
, как применить это простым способом к df для замены на NA.
И более того, если есть другой подобный фрейм данных, где все эти типы значений являются действительными. Как отличить их в нескольких фреймах данных?
1 ответ
Решение
Попробуй это:
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