2016-09-25 15 views
1

В кадре данных у меня есть две категориальные переменные, скажем qs и vr данных кадра df. Этот блок данных довольно большой, но предположим, что это 100 различных уровней в qs, не обязательно следуя шаблону. Вектор столбца vr, который, как сказано, также является категориальной переменной, имеет некоторые отсутствующие значения.Замена недостающих значений вектора столбца

Что я хочу сделать, это обозначить недостающие значения, которые существуют в vr, в соответствии с соответствующей категорией или значением в qs.

Я знаю априори, что 9 различных категорий в qs, для которых vr имеет отсутствующие значения. Скажем, что ярлык для одной категории в qs равен 102, и для этой категории в qs в vr отсутствуют.

Итак, что я хочу, чтобы потом сделать

  • если категория/метка/значение в достаточном количестве == 102 == множества вр Greece
  • если категория/метка/значение в QS == 250 set vr == Italy

конец и дальше.

К сожалению, мой dataframe очень сложный и я не знаю, как я могу воспроизвести простую фреймворку данных.

+0

«Vr» все NA для «QS» 3. Я думаю, это является простым примером, чтобы показать сложную проблему. Но, если все элементы в 'vr' являются NA, как вы его замените на 'c' (здесь очевидно, что буквы следуют буквенному шаблону) – akrun

ответ

1

Предполагая, что существует «с» в «уг» на значение «QS» 3, мы можем использовать data.table

library(data.table) 
setDT(df)[, vr := na.omit(vr)[1] , by = qs] 

Не ясно, хочет ли ОП заменить недостающий значения с уникальными элементами для «vr» для каждого «qs» или из некоторых других значений. Если заменить некоторые другие ценности, создать ключ/значение набора данных и присоединиться к первоначальному набору данных on «QS»

df1 <- data.table(qs = 1:4, vr = c("Serbia", "England", "Greece", "USA")) 
df$qs <- as.numeric(as.character(df$qs)) 
setDT(df)[df1, on = "qs"][is.na(vr), vr := i.vr][, i.vr := NULL][] 
+0

Письма в моем примере предназначены только для иллюстрации, мне нужно заменить пропущенные значения в 'vr' с именами, которые я хочу. Например, если 'qs == 1' установил« отсутствующее значение для Сербии ». – msh855

+0

@ msh855 Я разместил комментарий ниже вашего вопроса. В вашем вопросе элементы «qs» отсутствуют для «vr» 3. Итак, как кто-нибудь знает, что его нужно заменить на «c»? – akrun

+0

Это не проблема, потому что я знаю, что нужно заменить. Так, например, для '3' я хочу установить« Грецию ». Настоящая трудность для меня в том, что я знаю, что отсутствуют значения в 'vr', но я не знаю, для каких категорий в« qs ». Найти, для какой категории в 'qs' есть недостающее значение в' vr', является самым сложным для меня, заменить его относительно легко, потому что я знаю, какое имя дать в 'vr', если бы я нашел категорию в' qs' – msh855