Как заменить значение c 'NA' (не все 'NA') на числовое значение c в кадре данных R? - PullRequest
0 голосов
/ 11 января 2020

У меня есть большой фрейм данных, который имеет более 500 строк и 40 столбцов, например;

dataframe <- data.frame(ID=c("ID1","ID2","ID3","..."), column1=c(1,NA,0,1), column2=c(1,0,0,1),column3=c(1,NA,NA,NA),... = c (1,0,1,1))

Теперь в столбце 3 есть три значения 'NA', и я хочу заменить столбец 3 идентификатора ID2. к числовому значению '1'.

Пожалуйста, скажите мне хороший способ сделать это.

Ответы [ 2 ]

1 голос
/ 11 января 2020

Вы можете задать подмножество указанной c ячейки и затем присвоить значение

dataframe$column3[dataframe$ID == "ID2" & is.na(dataframe$column3)] <- 1

Мы также можем использовать replace

transform(dataframe, column3 = replace(column3, ID == "ID2" & is.na(column3), 1))

 #   ID column1 column2 column3
 #1 ID1       1       1       1
 #2 ID2      NA       0       1
 #3 ID3       0       0      NA
 #4 ID4       1       1      NA

data

dataframe <- data.frame(ID=c("ID1","ID2","ID3", "ID4"), 
              column1=c(1,NA,0,1), column2=c(1,0,0,1),column3=c(1,NA,NA,NA))
0 голосов
/ 11 января 2020

Мы можем использовать data.table методы

library(data.table)
setDT(dataframe)[ID == "ID2" & is.na(column3), column3 := 1] 
dataframe
#    ID column1 column2 column3
#1: ID1       1       1       1
#2: ID2      NA       0       1
#3: ID3       0       0      NA
#4: ID4       1       1      NA

данные

dataframe <- data.frame(ID=c("ID1","ID2","ID3", "ID4"), 
          column1=c(1,NA,0,1), column2=c(1,0,0,1),column3=c(1,NA,NA,NA))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...