逐列合并两个数据框。 (从两个数据框中创建 table)
Merge Two data frames column by column. (creating a table out of two data frames)
我有两个这种格式的数据框
df1=data.frame( Date = c(1,2,3,4,5), customer1 = c(6,7,8,4,2), customer2 =
c(2,3,6,5,3)... )
df2=data.frame( Date = c(1,2,3,4,5), order1 = c(0,1,3,0,1), order2 =
c(0,1,0,0,2).. )
我想要一个将两个数据框与日期列交织在一起的结果。
Date Customer1 Order1 Date Customer2 Order2 Date ....
1 6 0 1 2 0 1
2 7 1 2 3 1 2
3 8 3 3 6 0 3
4 4 0 4 5 0 4
5 2 1 5 3 2 5
我使用了 for 循环 运行。列和 cbind 以获得所需的结果。我想知道是否有更简单、更有效的方法来做到这一点。
以下解决方案的列顺序不同或日期未出现多次。我真的不认为这两者都有很多原因,所以我将离开以下解决方案。
它假定数据是唯一的,否则不要使用此方法。
merge(df1, df2, key = date)
# Date customer1 customer2 order1 order2
# 1 1 6 2 0 0
# 2 2 7 3 1 1
# 3 3 8 6 3 0
# 4 4 4 5 0 0
# 5 5 2 3 1 2
我们可以在列序列上使用order
,然后根据order
、rbind
和'Date'得到数据集names
column 创建一个 vector
的列名。这可用于对完整数据集中的列进行排序 (cbind(df1, df2)
)
cbind(df1, df2)[c(rbind('Date', matrix(c(names(df1)[-1],
names(df2)[-1])[order(c(seq_along(df1)[-1], seq_along(df2)[-1]))], ncol=2)))]
# Date customer1 order1 Date.1 customer2 order2
#1 1 6 0 1 2 0
#2 2 7 1 2 3 1
#3 3 8 3 3 6 0
#4 4 4 0 4 5 0
#5 5 2 1 5 3 2
注意:最好在数据集中使用唯一的列名
我有两个这种格式的数据框
df1=data.frame( Date = c(1,2,3,4,5), customer1 = c(6,7,8,4,2), customer2 =
c(2,3,6,5,3)... )
df2=data.frame( Date = c(1,2,3,4,5), order1 = c(0,1,3,0,1), order2 =
c(0,1,0,0,2).. )
我想要一个将两个数据框与日期列交织在一起的结果。
Date Customer1 Order1 Date Customer2 Order2 Date ....
1 6 0 1 2 0 1
2 7 1 2 3 1 2
3 8 3 3 6 0 3
4 4 0 4 5 0 4
5 2 1 5 3 2 5
我使用了 for 循环 运行。列和 cbind 以获得所需的结果。我想知道是否有更简单、更有效的方法来做到这一点。
以下解决方案的列顺序不同或日期未出现多次。我真的不认为这两者都有很多原因,所以我将离开以下解决方案。
它假定数据是唯一的,否则不要使用此方法。
merge(df1, df2, key = date)
# Date customer1 customer2 order1 order2
# 1 1 6 2 0 0
# 2 2 7 3 1 1
# 3 3 8 6 3 0
# 4 4 4 5 0 0
# 5 5 2 3 1 2
我们可以在列序列上使用order
,然后根据order
、rbind
和'Date'得到数据集names
column 创建一个 vector
的列名。这可用于对完整数据集中的列进行排序 (cbind(df1, df2)
)
cbind(df1, df2)[c(rbind('Date', matrix(c(names(df1)[-1],
names(df2)[-1])[order(c(seq_along(df1)[-1], seq_along(df2)[-1]))], ncol=2)))]
# Date customer1 order1 Date.1 customer2 order2
#1 1 6 0 1 2 0
#2 2 7 1 2 3 1
#3 3 8 3 3 6 0
#4 4 4 0 4 5 0
#5 5 2 1 5 3 2
注意:最好在数据集中使用唯一的列名