У меня есть следующие данные для примера.
data_1 <- data.frame("ID" = c('a','b','c','d','e'),
"value" = c(2,4,9,5,3))
data_2 <- data.frame("ID" = c('a','c','d','b','e','a','e','d','c'),
'var' =c(2,6,2,4,6,8,6,4,5))
Я хочу вычислить новый столбец в data_2
так, чтобы для одного и того же ID
в двух наборах данных умножались value
и var
.
Что-то вроде для data_1$ID==data_2$ID
, затем data_1$value*data_2$var
. Так что newVar
будет (4,54,10,16,18,16,18,20,45)
.
1 ответ
Соедините два фрейма данных и умножьте value
и var
.
transform(merge(data_1, data_2, by = 'ID'), result = value * var)
Вы также можете использовать match
:
transform(data_2, result = var * data_1$value[match(ID, data_1$ID)])
# ID var result
#1 a 2 4
#2 c 6 54
#3 d 2 10
#4 b 4 16
#5 e 6 18
#6 a 8 16
#7 e 6 18
#8 d 4 20
#9 c 5 45
Использование dplyr
:
library(dplyr)
inner_join(data_1, data_2, by = 'ID') %>% mutate(result = value * var)
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.