如何在R数据帧中的列之间或最后一列之后添加一列?

由于没有人能完美地完成工作,因此人们可能会忘记添加分析所需的所有列,但是可以解决此问题。如果数据框中缺少一列,而我们后来才知道,则可以在重新排序列的帮助下轻松添加它。

示例

请看以下数据帧-

> x1<-1:20
> x2<-letters[1:20]
> x3<-rep(c(1,2),times=10)
> df<-data.frame(x1,x2,x3)
> df
   x1 x2 x3
1   1 a 1
2   2 b 2
3   3 c 1
4   4 d 2
5   5 e 1
6   6 f 2
7   7 g 1
8   8 h 2
9   9 i 1
10 10 j 2
11 11 k 1
12 12 l 2
13 13 m 1
14 14 n 2
15 15 o 1
16 16 p 2
17 17 q 1
18 18 r 2
19 19 s 1
20 20 t 2

假设缺少y1列,该列需要在x1和x2之间,则可以按如下所示创建和添加它-

> df$y1<-rep(c(22,24,26,28),times=5)
> df<-df[,c("x1","y1","x2","x3")]
> df
   x1 y1 x2 x3
1   1 22  a  1
2   2 24  b  2
3   3 26  c  1
4   4 28  d  2
5   5 22  e  1
6   6 24  f  2
7   7 26  g  1
8   8 28  h  2
9   9 22  i  1
10 10 24  j  2
11 11 26  k  1
12 12 28  l  2
13 13 22  m  1
14 14 24  n  2
15 15 26  o  1
16 16 28  p  2
17 17 22  q  1
18 18 24  r  2
19 19 26  s  1
20 20 28  t  2

假设缺少另一列,该列应位于最后一个位置,则可以按如下方式创建和添加它:

> df$y2<-rep(c(100,105,110,115,120),times=4)
> df<-df[,c("x1","y1","x2","x3","y2")]
> df
   x1 y1  x2  x3  y2
1   1 22  a  1  100
2   2 24  b  2  105
3   3 26  c  1  110
4   4 28  d  2  115
5   5 22  e  1  120
6   6 24  f  2  100
7   7 26  g  1  105
8   8 28  h  2  110
9   9 22  i  1  115
10 10 24  j  2  120
11 11 26  k  1  100
12 12 28  l  2  105
13 13 22  m  1  110
14 14 24  n  2  115
15 15 26  o  1  120
16 16 28  p  2  100
17 17 22  q  1  105
18 18 24  r  2  110
19 19 26  s  1  115
20 20 28  t  2  120