Я согласен, что эту проблему лучше всего решить при чтении, установив na.strings = c("", "N/A", "n/a")
в read.table
, как предложено @Darren Tsai. Если это больше не вариант, потому что вы уже обработали данные и , как я подозреваю, вы не хотите сохранить только полные случаи, как предлагает @Rui Barradas, тогда проблему можно решить следующим образом:
ДАННЫЕ :
df_final <- data.frame(v1 = c(1, "N/A", 2, "n/a", "", 3),
v2 = c("a", "", "b", "c", "d", "N/A"))
df_final
v1 v2
1 1 a
2 N/A
3 2 b
4 n/a c
5 d
6 3 N/A
РЕШЕНИЕ :
Ввести NA
в пустые поля вы можете сделать:
df_final[df_final==""] <- NA
df_final
v1 v2
1 1 a
2 N/A <NA>
3 2 b
4 n/a c
5 <NA> d
6 3 N/A
Чтобы изменить другие значения на NA
, вы можете использовать lapply
и функцию:
df_final[,1:2] <- lapply(df_final[,1:2], function(x) gsub("N/A|n/a", NA, x))
df_final
v1 v2
1 1 a
2 <NA> <NA>
3 2 b
4 <NA> c
5 <NA> d
6 3 <NA>