NA
- это не то же самое, что "NA"
- R
, но может быть интерпретировано как таковое вашей любимой программой для работы с электронными таблицами. NA
- это особое значение в R
как NaN
(не число). Если я правильно понимаю, один из ваших решений, чтобы заменить значения «NA» в колонке, представляющей Северную Америку с чем-то еще, в этом случае вы просто должны быть в состоянии сделать ...
df$col[ df$col == "NA" ] <- "NorthAmerica"
Это предполагает что ваши значения «NA» на самом деле являются символьными строками. is.na()
не вернет никаких значений, если они являются символьными строками, поэтому df$col[ is.na(df$col) ] <- 0
не будет работать.
Пример разницы между НС и «НС»:
x <- c(1, 2, 3 , "NA" , 4 , 5 , NA)
> x[ !is.na(x) ]
[1] "1" "2" "3" "NA" "4" "5"
> x[ x == "NA" & !is.na(x) ]
[1] "NA"
метод для решения этой проблемы
Я думаю, что вы хотите оставить «NA», и любые NA
с, как они в первый df, но сделать все NA
во втором df, образованном с rbind.fill()
, изменить на что-то вроде «NotAvailable». Вы можете сделать это как так ...
df1 <- data.frame(col = rep("NA" , 6) , x = 1:6 , z = rep(1 , 6))
df2 <- data.frame(col = rep("SA" , 2) , x = 1:2 , y = 5:6)
df <- rbind.fill(df1 , df2)
temp <- df [ (colnames(df) %in% colnames(df2)) ]
temp[ is.na(temp) ] <- "NotAvailable"
res <- cbind(temp , df[ !(colnames(df) %in% colnames(df2)) ])
#df has real NA values in column z and column y. We just want to get rid of y's
df
# col x z y
# 1 NA 1 1 NA
# 2 NA 2 1 NA
# 3 NA 3 1 NA
# 4 NA 4 1 NA
# 5 NA 5 1 NA
# 6 NA 6 1 NA
# 7 SA 1 NA 5
# 8 SA 2 NA 6
#res has "NA" strings in col representing "North America" and NA values in z, whilst those in y have been removed
#More generally, any NA in df1 will be left 'as-is', whilst NA from df2 formed using rbind.fill will be converted to character string "NotAvilable"
res
# col x y z
# 1 NA 1 NotAvailable 1
# 2 NA 2 NotAvailable 1
# 3 NA 3 NotAvailable 1
# 4 NA 4 NotAvailable 1
# 5 NA 5 NotAvailable 1
# 6 NA 6 NotAvailable 1
# 7 SA 1 5 NA
# 8 SA 2 6 NA
Строка «я t не работает "не является встроенным сообщением об ошибке в R. – 2013-03-13 20:50:59
Просьба представить [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Если вы не можете поделиться своим фреймом данных, сделайте небольшой пример, который реплицирует вашу проблему. –
Вы пытались изменить опцию 'na' для write.csv? – blindjesse