R: объединение списков фреймов данных на нескольких ключах

Я пытаюсь одновременно объединить несколько фреймов данных в r, объединяя их в списки и используя mapply и merge. Это прекрасно работает при слиянии с одним ключом, но не при слиянии с несколькими ключами, используя аргумент 'by = c("a","b") "в слиянии.

Mapply, по-видимому, обрабатывает аргумент by как третий список для циклического прохождения, а не пропускает весь аргумент каждый раз.

Например, этот код:

df <- data.frame(a = rep(1:3, 3),
                 b = c(rep("aa",3), rep("bb",3), rep("cc",3)),
                 c = rnorm(9, mean = 5))
df2 <- df1 <- df 
list1 <- list(df, df1, df2)
df3 <- data.frame(a = rep(3:1, 3),
                  b = c(rep("cc",3), rep("bb",3), rep("aa",3)),
                  c = rnorm(9, mean = -5))
df5 <- df4 <- df3 
list2 <- list(df3, df4, df5)

list3 <- mapply(merge, list1, list2, SIMPLIFY = FALSE, by = c("a","b"))

возвращает предупреждающее сообщение "более длинный аргумент, не кратный длине более короткого". Но когда я добавляю третий термин 'by = c("a","b","c") ", он пытается объединить первый кадр данных с помощью" a ", второй с помощью" b "и третий с помощью" с". Однако я хочу объединить их как a, так и b. Кто-нибудь знает, как я могу это сделать?

0 ответов

Другие вопросы по тегам