Предполагая, что a1
, a2
, b1
, b2
являются числами, и вы хотите добавить их в окончательный кадр данных, вы можете объединить df1
и df2
с помощью Group
и добавить соответствующие значения ,
Это можно сделать в базе R:
transform(merge(df1, df2, by = 'Group'), V1 = V1.x + V1.y,
V2 = V2.x + V2.y)[names(df1)]
# Group V1 V2
#1 a 6 8
#2 a 8 10
#3 b 8 10
#4 b 10 12
#5 b 12 14
Или в dplyr
:
library(dplyr)
inner_join(df1, df2, by = 'Group') %>%
mutate(V1 = V1.x + V1.y, V2 = V2.x + V2.y) %>%
select(names(df1))
data
Использовали эти фиктивные данные:
df1 <- structure(list(Group = structure(c(1L, 1L, 2L, 2L, 2L), .Label = c("a",
"b"), class = "factor"), V1 = c(1L, 3L, 1L, 3L, 5L), V2 = c(2L,
4L, 2L, 4L, 6L)), class = "data.frame", row.names = c(NA, -5L))
df2 <- structure(list(Group = structure(1:2, .Label = c("a", "b"),
class = "factor"), V1 = c(5L, 7L), V2 = c(6L, 8L)),
class = "data.frame", row.names = c(NA, -2L))