如何在 R 数据框中查找二阶交互变量?
如果我们有个名为 df 的数据框,其中包含四列,分别是 x、y、z 和 a,那么二阶交互列将是 xy、xz、xa、yz、ya 和 za。我们可以利用 combn 函数来查找利用数据框列可以创建多少个二阶交互变量,如下例所示。
考虑以下数据框 −
示例
x1<-rpois(20,2) x2<-rpois(20,2) x3<-rpois(20,1) x4<-rpois(20,2) x5<-rpois(20,5) x6<-rpois(20,2) df1<-data.frame(x1,x2,x3,x4,x5,x6) df1
输出
x1 x2 x3 x4 x5 x6 1 3 1 1 2 5 0 2 1 2 3 4 6 0 3 3 2 1 4 5 1 4 1 2 0 2 3 3 5 0 0 2 1 4 3 6 4 1 0 8 3 0 7 3 2 1 0 8 3 8 3 2 1 2 6 3 9 4 4 0 1 5 0 10 1 1 1 3 3 2 11 3 2 0 4 3 1 12 0 0 2 1 4 2 13 4 4 0 2 3 3 14 2 3 0 3 3 1 15 1 4 3 1 8 2 16 2 3 1 1 4 2 17 2 3 0 2 4 3 18 2 5 1 1 10 3 19 0 2 0 1 9 3 20 0 3 0 1 4 2
在 df1 中查找二阶交互变量 −
combn(colnames(df1),2,FUN=paste,collapse='_')
[1] "x1_x2" "x1_x3" "x1_x4" "x1_x5" "x1_x6" "x2_x3" "x2_x4" "x2_x5" "x2_x6" [10] "x3_x4" "x3_x5" "x3_x6" "x4_x5" "x4_x6" "x5_x6"
示例
y1<-round(rnorm(20),2) y2<-round(rnorm(20),2) y3<-round(rnorm(20),2) y4<-round(rnorm(20),2) y5<-round(rnorm(20),2) y6<-round(rnorm(20),2) df2<-data.frame(y1,y2,y3,y4,y5,y6) df2
输出
y1 y2 y3 y4 y5 y6 1 0.37 -0.25 -2.60 1.56 -0.64 -0.80 2 0.68 0.65 2.06 -0.54 0.16 -0.22 3 0.51 -0.37 0.16 -2.23 -0.42 0.52 4 -0.01 -0.32 1.65 -2.59 1.01 -1.86 5 -0.65 -0.56 -0.41 -0.88 0.50 -0.66 6 -0.42 0.55 0.26 0.02 -1.52 -0.34 7 -0.89 -0.91 -1.28 0.26 -1.27 -1.04 8 0.12 0.59 -0.80 -1.24 1.57 -0.53 9 -0.26 -1.09 0.65 -0.40 0.18 0.16 10 -1.10 -0.70 2.30 0.31 -0.46 -0.16 11 -0.42 -0.06 -0.76 0.45 0.28 -0.10 12 -0.07 2.08 -0.17 -0.16 -0.54 2.06 13 -0.91 0.37 -1.19 -2.44 -0.45 0.46 14 0.74 1.06 0.42 0.85 -0.12 -0.21 15 1.51 0.29 -0.14 0.28 0.76 -0.45 16 0.11 -0.66 -1.70 1.88 -1.16 1.05 17 0.49 0.44 -1.38 -0.39 -1.47 -1.12 18 0.67 -0.29 1.40 0.80 -0.25 1.23 19 0.45 1.57 1.34 1.75 0.25 -0.89 20 1.05 0.23 -0.06 -0.29 1.50 1.20
在 df2 中查找二阶交互变量 −
combn(colnames(df2),2,FUN=paste,collapse='_')
[1] "y1_y2" "y1_y3" "y1_y4" "y1_y5" "y1_y6" "y2_y3" "y2_y4" "y2_y5" "y2_y6" [10] "y3_y4" "y3_y5" "y3_y6" "y4_y5" "y4_y6" "y5_y6"
广告