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