имеет списки, первая (список1) имеет id, имя, возраст и другие (список2, list3, ..) имеет идентификаторы и тестовое значение (уникальное).Функция MATCH в r
список 1:
id age name bio-test
1 40 danny
2 16 nora
3 35 james
4 21 ben
список 2 (био-тест):
id test passed year
1 100 yes 1
5 80 yes n/a
4 55 no 2
Я пытаюсь добавить LIST1 тестовое значение для каждого идентификатора (не каждый идентификатор имеет проверочное значение).
это часть кода:
for (i in 1:length(list1)) {
list1$test1value <- list2$test[match(list1$id[i], list2$id[i]),
nomatch = NA_integer_, incomparables = NULL)] }
, но вместо этого смотрит вверх тестовое значение по идентификатору, он копируется только первое тестовое значение из list2 и скопировать его на 200 клеток, а другой 3000 являются Н/A.
что не так?
изменен. Спасибо. – anat
Это [родственный вопрос] (http://stackoverflow.com/questions/41149718/overwriting-a-row-with-a-matched-id-value-in-the-same-dataframe/41150472#41150472) от вчера. Мой ответ использует 'match' для заполнения строк отсутствующих значений. Ваша проблема решается проще с помощью 'merge'. что-то вроде 'merge (df1, df2, by =" id ", all = TRUE)'. – lmo
merge не подходит для моих целей, я не хочу создавать другой файл и объединять два. Я просто хочу скопировать одно значение из каждого списка2, list3 .. в список1, который имеет тот же идентификатор. – anat