我正在尝试通过在original-df列1中重复值并将它们对应于original-df列2中的重复值来创建新的数据帧。但是,每个列的值应以不同的方式重复。例如,original-df列1中的值将重复为1,2,3,1,2,3,1,2,3。原来2d列中的值应重复为1,1,1,2,2,2,3,3,3。
#here is original df
df1<-data.frame(x=1:3, y=10:12)
#I've tried the followig:
data.frame(x=df1$x,y=df1[,2])->df2
range<-1:3
data.frame(x=df1$x,y=df1$y[range,2])->df3
#I then tried this:
rep(df1$x,df1$y[l,2])->df4
#output either looks like this:
x y
1 1 10
2 2 11
3 3 12
#Or I receive an error message:
Error in df1$y[1, 2] : incorrect number of dimensions
#I expect data output to look like this:
x y
1 10
2 10
3 10
1 11
2 11
3 11
1 12
2 12
3 12
答案 0 :(得分:1)
选项为expand
library(tidyr)
expand(df1, x, y)
或者使用expand.grid
中的base R
do.call(expand.grid, df1)