我正在尝试以特定方式组合两个数据帧并创建一个新的数据帧,并避免for循环。
假设一个数据框1如
DF1
chan
1 A01
2 A02
3 A03
4 A04
数据框2为:
DF2
Len
1 10
2 11
3 12
我需要创建看起来像第三个数据框(不使用for循环):
DF3
chan Len
1 A01 10
2 A01 11
3 A01 12
1 A02 10
2 A02 11
3 A02 12
用R和/或python理解答案。 提前非常感谢!
答案 0 :(得分:0)
阿德里安,尝试
df3 <- expand.grid(df1$chan, df2$Len)
答案 1 :(得分:0)
我认为您想要做的是交叉联接。有几个软件包可以帮助您完成此任务,例如基R的merge
函数,来自dplyr
软件包的联接函数等。我喜欢使用crossing
软件包中的tidyr
函数。
DF1 <- tibble(Chan = c("A01","A02","A03","A04"))
DF2 <- tibble(Len = 10:12)
tidyr::crossing(A, B)
# A tibble: 12 x 2
A B
<chr> <int>
1 A01 10
2 A01 11
3 A01 12
4 A02 10
5 A02 11
6 A02 12
7 A03 10
8 A03 11
9 A03 12
10 A04 10
11 A04 11
12 A04 12