Na.strings применяется к кадру данных

В настоящее время у меня есть dataframe, в котором есть несколько строк, которые я бы хотел преобразовать в "NA". Когда я впервые импортировал эту фреймворк из .csv, я мог бы использовать na.strings = c ( "A", "B", "C" ) и т.д., Чтобы удалить значения, которые мне не нужны.

Я хочу сделать то же самое снова, но на этот раз уже использую dataframe, не импортируя другой .csv

Чтобы импортировать данные, я использовал:

data<-read.csv("code.csv", header=T, strip.white=TRUE, stringsAsFactors=FALSE, na.strings=c("", "A", "B", "C"))

Теперь, с "данными", я хотел бы подмножить его, удалив еще более конкретные значения в строках.. Я попробовал следующее:

data2<-data.frame(data, na.strings=c("D", "E", "F"))

Конечно, это не работает, потому что я думаю, что na.strings работает только с "прочитанным" пакетом.. не другими функциями. Есть ли какой-либо эквивалент, чтобы просто преобразовать определенные значения в NA, чтобы я мог na.omit(data2) довольно легко?

Спасибо за вашу помощь.

Ответ 1

Просто назначьте значения NA напрямую.

например:.

x <- data.frame(a=1:5, b=letters[1:5])
# > x
#   a b
# 1 1 a
# 2 2 b
# 3 3 c
# 4 4 d
# 5 5 e

# convert the 'b' and 'd' in columb b to NA
x$b[x$b %in% c('b', 'd')] <- NA
# > x
#  a     b
# 1 1    a
# 2 2 <NA>
# 3 3    c
# 4 4 <NA>
# 5 5    e

Ответ 2

Здесь можно заменить значения в нескольких столбцах:

# an example data frame
dat <- data.frame(x = c("D", "E", "F", "G"), 
                  y = c("A", "B", "C", "D"), 
                  z = c("X", "Y", "Z", "A"))
#   x y z
# 1 D A X
# 2 E B Y
# 3 F C Z
# 4 G D A

# values to replace
na.strings <- c("D", "E", "F")

# index matrix 
idx <- Reduce("|", lapply(na.strings, "==", dat))

# replace values with NA
is.na(dat) <- idx

dat
#     x    y z
# 1 <NA>    A X
# 2 <NA>    B Y
# 3 <NA>    C Z
# 4    G <NA> A

Ответ 3

Поскольку у нас нет ваших данных, я буду использовать mtcars. Предположим, мы хотим установить значения в любом месте mtcars, равные 4 или 19,2, NA

ind <- which(mtcars == 4, arr.ind = TRUE)
mtcars[ind] <- NA

В вашей настройке вы замените это число на "D" или "E"

Ответ 4

data[ data == "D" ] = NA

Обратите внимание, что если вы пытались заменить NA на "D" , обратное (df [df == NA] = "D" ) не будет работать; вам нужно будет использовать df [is.na(df)] < - "D"