如何从包含R中相同值的数据框中删除列?

如果我们在R数据帧的所有行中只有一个值,则我们可能希望删除整个列,因为该列的影响对数据分析目标没有任何意义。因此,代替删除列,我们可以提取包含不同值的列。

示例

set.seed(1001)
x1<-sample(0:1,20,replace=TRUE)
x2<-rep(5,20)
x3<-sample(0:5,20,replace=TRUE)
x4<-sample(1:10,20,replace=TRUE)
df1<-data.frame(x1,x2,x3,x4)
df1

输出结果

  x1 x2 x3 x4
1  0 5  1  6
2  0 5  1  4
3  0 5  3  7
4  0 5  2  5
5  1 5  3  5
6  0 5  0  5
7  1 5  1  7
8  0 5  5  5
9  1 5  5  4
10 1 5  2  1
11 1 5  4  6
12 1 5  5  8
13 1 5  0  4
14 1 5  1  9
15 1 5  2  9
16 0 5  5  8
17 0 5  1  6
18 0 5  1  4
19 1 5  3  7
20 0 5  4  2

删除包含5的列-

示例

df1[,c(1,3,4)]

输出结果

  x1 x3 x4
1  0 1  6
2  0 1  4
3  0 3  7
4  0 2  5
5  1 3  5
6  0 0  5
7  1 1  7
8  0 5  5
9  1 5  4
10 1 2  1
11 1 4  6
12 1 5  8
13 1 0  4
14 1 1  9
15 1 2  9
16 0 5  8
17 0 1  6
18 0 1  4
19 1 3  7
20 0 4  2

让我们看另一个例子-

示例

y1<-sample(1:3,20,replace=TRUE)
y2<-sample(1:5,20,replace=TRUE)
y3<-rep(1,20)
y4<-sample(1:2,20,replace=TRUE)
y5<-sample(1:6,20,replace=TRUE)
y6<-sample(1:8,20,replace=TRUE)
df2<-data.frame(y1,y2,y3,y4,y5,y6)
df2

输出结果

  y1 y2 y3 y4 y5 y6
1  3 2   1 1   3 1
2  2 2   1 2   3 5
3  2 5   1 1   2 6
4  2 4   1 1   4 6
5  1 1   1 1   1 4
6  1 2   1 1   3 6
7  1 3   1 2   5 2
8  3 2   1 2   5 1
9  1 3   1 1   3 6
10 3 1   1 2   6 1
11 3 3   1 2   4 2
12 2 4   1 2   5 5
13 3 5   1 2   4 7
14 3 2   1 1   1 5
15 3 1   1 2   3 1
16 2 4   1 2   5 5
17 2 3   1 2   3 6
18 3 4   1 1   1 6
19 1 1   1 1   6 5
20 1 3   1 1   6 1

从数据帧df2中删除列3-

示例

df2[,c(1,2,4,5,6)]

输出结果

  y1 y2 y4 y5 y6
1  3 2   1 3   1
2  2 2   2 3   5
3  2 5   1 2   6
4  2 4   1 4   6
5  1 1   1 1   4
6  1 2   1 3   6
7  1 3   2 5   2
8  3 2   2 5   1
9  1 3   1 3   6
10 3 1   2 6   1
11 3 3   2 4   2
12 2 4   2 5   5
13 3 5   2 4   7
14 3 2   1 1   5
15 3 1   2 3   1
16 2 4   2 5   5
17 2 3   2 3   6
18 3 4   1 1   6
19 1 1   1 6   5
20 1 3   1 6   1