Я хочу объединить два набора данных, в которых один набор данных (содержит 1 измерение) транспонирован и используется в качестве переменных для соединения с другим.
Например:
df = data.frame(A=1:3, B=3:5)
df2 = data.frame(lab = letters[1:5], C = seq(letters[1:5]))
df2_transposed <- data.frame(t(df2))
colnames(df2_transposed ) <- t(df2)[1,]
df2_new <- df2_transposed[2,]
# there are certainly alternatives without transposing data
Я хочу увидеть такой набор данных:
A B a b c d e
1 1 3 1 2 3 4 5
2 2 4 1 2 3 4 5
3 3 5 1 2 3 4 5
Я пробовал два метода:
Метод 1
library(plyr)
new <- join(df, df2_new, by = NULL, type = "left", match = "all")
, который производит
A B a b c d e
1 1 3 <NA> <NA> <NA> <NA> <NA>
2 2 4 <NA> <NA> <NA> <NA> <NA>
3 3 5 <NA> <NA> <NA> <NA> <NA>
Метод 2
new1 = vector('list',3)
for (i in 1:nrow(df)){
new1[[i]] = cbind(df[i,], df2_new[1,])
}
new2 = data.frame(matrix(unlist(new1), nrow= nrow(df), byrow=T), stringsAsFactors = F)
colnames(new2) <- c(colnames(df), colnames(df2_new))
, который производит
A B a b c d e
1 1 3 1 1 1 1 1
2 2 4 1 1 1 1 1
3 3 5 1 1 1 1 1
Все еще не повезло в решении этой проблемы.