Значения подмножества, которых нет в другом наборе данных

#r #data.table #subset

#r #data.table #подмножество

Вопрос:

У меня есть dataset1 с некоторыми пропущенными значениями в каждом из столбцов и dataset2 (те же измерения), но вмененные пропущенные значения.

Я хочу подмножить вмененные значения из dataset2, которые были NA в dataset1. У меня нет флага NA в моих исходных данных.

Я использую R Studio:

 #Example
data.org <- as.data.frame( cbind(WT=c(NA,20,55,NA,25), HT= c(55,NA,NA,25,30), CBC=c(NA,10,20,NA,50) ) )
data.imp <- as.data.frame( cbind(WT=c(10,20,55,25,25), HT= c(55,30,55,25,30), CBC=c(15,10,20,40,50) ) )

#output
data.imp.WT <- as.data.frame(cbind(WT=c(10,25)))
data.imp.HT <- as.data.frame(cbind(HT=c(30,55)))
data.imp.CBC <- as.data.frame(cbind(CBC=c(15,40)))
  

Ответ №1:

Ниже приведены недостающие значения :

 data.imp[is.na(data.org)]
#[1] 10 25 30 55 15 40
  

Чтобы иметь эти значения по столбцам, мы можем использовать Map :

 Map(function(x, y) y[is.na(x)], data.org, data.imp)

#$WT
#[1] 10 25

#$HT
#[1] 30 55

#$CBC
#[1] 15 40
  

Комментарии:

1. Мне нужно ввести структуру фрейма данных для каждой переменной

2. Если вы поместите выходные данные из приведенного выше data , вы можете использовать stack(data) для получения выходных данных в одном фрейме данных или, list2env(data, .GlobalEnv) если хотите, в отдельных фреймах данных.

3. Я хочу, чтобы они были в одном фрейме данных. Стек (данные) работал для этого примера, но я получил следующую ошибку, когда применил ее к своим фактическим данным, с которыми я работаю: in stack.default(Map(function(x, y) y[is.na(x)], data.org, data.imp): non-vector elements will be ignored и получил 0 для 2 переменных

4. Это Map(function(x, y) y[is.na(x)], data.org, data.imp) работало нормально, но не внутри стека

5. есть идеи, почему?