Как связать данные из таблиц разной длины

Хорошо, я уверен, что есть простое решение. Предполагая следующие данные

A <- 1:10
B <- rep("Part A", 10)
C <- 10:19
df1 <- data.frame(A,B,C)

A <- 1:9
B <- rep("Part B", 9)
D <- 20:28
df2 <- data.frame(A,B,D)

Теперь я хочу создать df3, в котором пользователь указывает имена столбцов. Таким образом, df3 должен быть фреймом данных 2 * 19, состоящим только из A и B.

Это не работает

df3 <- rbind(df1[A,B], df2[A,B])

Я не хочу использовать функцию common_cols или [,x], поскольку в моем реальном наборе данных более 1000 переменных, которые не всегда находятся в одном и том же порядке.


person lukeg    schedule 10.08.2015    source источник


Ответы (1)


Ваш синтаксис не совсем подходит для подмножества. Пытаться

cols <- c("A", "B")
rbind(df1[,cols], df2[,cols])

Столбцы, которые вы хотите сохранить, должны быть вектором имен (или индексов / логических элементов) после ,.

person Rorschach    schedule 10.08.2015
comment
Также может быть вектор логики, просто чтобы добавить опцию - person talat; 10.08.2015
comment
@docendodiscimus Я знал, что что-то пропущу, когда начал писать это :) Функции подмножества так много делают. - person Rorschach; 10.08.2015