r创建多个记录的数据操作
我有两个数据帧,如下所示r创建多个记录的数据操作,r,merge,dataframe,data-manipulation,R,Merge,Dataframe,Data Manipulation,我有两个数据帧,如下所示 v1 v2 a 0.3 b 0.5 c 0.6 d 0.5 及 我希望数据帧如下所示 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
v1 v2
a 0.3
b 0.5
c 0.6
d 0.5
及
我希望数据帧如下所示
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
有人能告诉我怎么做吗?创建此数据框的原因是为逻辑回归输出创建多个场景。我们可以将
df
的每行复制4次,从而cbind
使用df2$v3
x4进行复制
cbind(df[rep(1:nrow(df), each = 4), ], v3 = rep(df2$v3, 4))
我们可以将
df
的每一行复制4次,然后用df2$v3
x4复制cbind
它
cbind(df[rep(1:nrow(df), each = 4), ], v3 = rep(df2$v3, 4))
合并将起作用
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
合并将起作用
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
这里是另一个带有
CJ
的选项,来自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
的选项,来自数据。表
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
注意:它是动态的,因为它随每个数据集中的行数而变化。您好,欢迎使用StackOverflow。你能分享你自己尝试过的吗?我们不应该为您编写代码。您好,欢迎来到StackOverflow。你能分享你自己尝试过的吗?我们不应该为您编写代码。很好的解决方案
merge(df1,df2)
给出了相同的结果,尽管没有排序。Yes@pierrelaffortune,因为排序,我指定了列名!!很好的解决方案merge(df1,df2)
给出了相同的结果,尽管没有排序。Yes@pierrelaffortune,因为排序,我指定了列名!!