繁体   English   中英

在 R 中检查数据框中的相同列

[英]Checking for identical columns in a data frame in R

假设您有一个名为 data 的数据框,其中包含两个相同的列:

A B
1 1
2 2
3 3
4 4

如何检查这两列是否相同并返回一个逻辑值来表示它? 一个非常基本的伪代码是:

if(data$A == data$B)
{
   print("Column A and B are identical")
}

我一直在纠结这个问题,但还没有找到一种看起来没有不必要的复杂的方法。 谢谢。

你可以使用identical

identical(DT[['A']],DT[['B']])

你可以使用all()

> data <- data.frame(A=c(1,2,3,4), B=c(1,2,3,4))
> all(data$A == data$B)
[1] TRUE

这对于您的问题来说可能有点矫枉过正,但您可能还想从“比较”包中查看compare() 考虑以下示例:

> data <- data.frame(A = c(1, 2, 3, 4), B = c(1, 2, 3, 4))
> compare(data[1], data[2]) ## Should be false
FALSE [TRUE]
> compare(data[1], data[2], ignoreNames = TRUE) # Allow different names
TRUE
  dropped names
> data <- data.frame(A = c(1, 2, 3, 4), B = as.character(c(1, 2, 3, 4)))
> str(data) ## "B" is now a factor, so use `coerce` to test for equality
'data.frame':   4 obs. of  2 variables:
 $ A: num  1 2 3 4
 $ B: Factor w/ 4 levels "1","2","3","4": 1 2 3 4
> compare(data[1], data[2], ignoreNames = TRUE, coerce = TRUE)
TRUE
  [A] coerced from <factor> to <numeric>
  dropped names

有一个通用的逻辑参数allowAll ,可以将其设置为TRUE以允许compare函数尝试不同的转换来测试相等性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM