如何检查R数据帧的某些特定列是否等于一列?

如果我们在一个数据帧中有大量数据,并且怀疑某些数据列是重复的,或者它们中的某些等于特定的列,那么我们可以使用基数R中的sapply函数来找出它。这样,我们可以删除重复的列,这些重复的列并不能帮助我们的数据分析目标。

例1

请看以下数据帧:

> set.seed(354)
> x1<-rpois(20,5)
> x2<-rpois(20,5)
> x3<-rpois(20,5)
> x4<-rpois(20,5)
> x5<-rpois(20,5)
> df1<-data.frame(x1,x2,x3,x4,x5)
> df1

输出结果

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

检查x1和x5列是否为

示例

> all(sapply(list(df1$x5),function(x) x==df1$x1))

输出结果

[1] FALSE

示例

> all(sapply(list(df1$x2,df1$x3),function(x) x==df1$x1))

输出结果

[1] FALSE

示例

> all(sapply(list(df1$x1,df1$x3),function(x) x==df1$x2))

输出结果

[1] FALSE

示例

> all(sapply(list(df1$x1,df1$x2,df1$x3),function(x) x==df1$x5))

输出结果

[1] FALSE

示例

> all(sapply(list(df1$x1,df1$x2,df1$x3),function(x) x==df1$x4))

输出结果

[1] FALSE

例2

> y1<-rep(c(1,2,3,4),5)
> y2<-rep(c(1,2,3,4),5)
> y3<-rep(c(1,2,3,4),5)
> y4<-rep(c(1,2,4,5),5)
> df2<-data.frame(y1,y2,y3,y4)
> df2

输出结果

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

示例

> all(sapply(list(df2$y2, df2$y3),function(x) x==df2$y1))

输出结果

[1] TRUE

示例

> all(sapply(list(y2,y3),function(x) x==df2$y1))

输出结果

[1] TRUE

示例

> all(sapply(list(df2$y3),function(x) x==df2$y2))

输出结果

[1] TRUE

示例

> all(sapply(list(df2$y2,df2$y3),function(x) x==df2$y4))

输出结果

[1] FALSE