#r #dataframe
#r #dataframe
Вопрос:
Если у меня есть data.frame (df1) следующим образом:
Name Count
a 1
b 2
c 3
и другой data.frame (df2), подобный:
Name Count
aa 0
ba 0
ca 0
b 0
a 0
c 0
Я хочу получить значения, соответствующие df1 в df2, где имена совпадают. В настоящее время я пытаюсь:
idx = which(df2$Name %in% df1$Name)
df2[idx,2] = df1$Count
Кажется, что это меняет местами или переставляет некоторые из сохраненных значений. Каким будет метод, при котором порядок в исходном data.frame может быть сохранен?
Комментарии:
1. Попробуйте:
df2[match(df1$Name, df2$Name),]$Count <- df1$Count
Ответ №1:
Вы можете получить индексы для замены, используя match
:
df2[match(df1$Name, df2$Name),]$Count <- df1$Count
Что касается того, почему ваше решение не работает, сравните вывод:
which(df2$Name %in% df1$Name)
[1] 4 5 6
и
match(df1$Name, df2$Name)
[1] 5 4 6