2016-02-03 24 views
1

我有兩個數據幀,如下所示。r數據操作創建多個記錄

v1 v2 
a 0.3 
b 0.5 
c 0.6 
d 0.5 

v3 
aa 
ab 
ac 
ad 

我想要的數據幀如下。

v1 v2 v3 
a 0.3 aa 
a 0.3 ab 
a 0.3 ac 
a 0.3 ad 
b 0.5 aa 
b 0.5 ab 
b 0.5 ac 
b 0.5 ad 
c 0.6 aa 
c 0.6 ab 
c 0.6 ac 
c 0.6 ad 
d 0.5 aa 
d 0.5 ab 
d 0.5 ac 
d 0.5 ad 

有人可以告訴我該怎麼做?創建此數據框的原因是爲邏輯迴歸輸出創建多個場景。

+4

嗨,歡迎來到StackOverflow。你能分享你自己試過的嗎?我們不應該爲你寫你的代碼。 – Tdelang

回答

2

合併將工作!

merge(df2, df1)[,c("v1", "v2", "v3")] 

# v1 v2 v3 
# 1 a 0.3 aa 
# 2 a 0.3 ab 
# 3 a 0.3 ac 
# 4 a 0.3 ad 
# 5 b 0.5 aa 
# 6 b 0.5 ab 
# 7 b 0.5 ac 
# 8 b 0.5 ad 
# 9 c 0.6 aa 
# 10 c 0.6 ab 
# 11 c 0.6 ac 
# 12 c 0.6 ad 
# 13 d 0.5 aa 
# 14 d 0.5 ab 
# 15 d 0.5 ac 
# 16 d 0.5 ad 
+0

不錯的解決方案。 'merge(df1,df2)'給出了相同的結果,儘管未排序。 –

+0

是@PierreLafortune,因爲排序我指定了列名! – dikesh

+0

放鬆。兩個感嘆號是沒有必要的。 –

3

我們可以複製每個df 4倍,因此cbinddf2$v3 X 4.

cbind(df[rep(1:nrow(df), each = 4), ], v3 = rep(df2$v3, 4)) 
0

這裏是data.table

library(data.table) 
CJ(1:nrow(df1), 1:nrow(df2))[,c(df1[V1,],list(v3=df2[V2,]))] 
# v1 v2 v3 
# 1: a 0.3 aa 
# 2: a 0.3 ab 
# 3: a 0.3 ac 
# 4: a 0.3 ad 
# 5: b 0.5 aa 
# 6: b 0.5 ab 
# 7: b 0.5 ac 
# 8: b 0.5 ad 
# 9: c 0.6 aa 
#10: c 0.6 ab 
#11: c 0.6 ac 
#12: c 0.6 ad 
#13: d 0.5 aa 
#14: d 0.5 ab 
#15: d 0.5 ac 
#16: d 0.5 ad 

注意與CJ另一種選擇:它是動態的,因爲它在每個數據集的行數變化。