我有一个包含2列字符串的数据框架。我们的目标是看看它们中有多少是相同的,包括NA
值。如果两列都给出NA
,则应将其视为相同的。
class(df$column_1) # it shows characters
length(which(df$column_1 == df$column_2)) # the result exclude the NA rows
试着问除了is.na
:
length(which(x$a == x$b | (is.na(x$a) & is.na(x$b))))
#[1] 2
数据:
x <- data.frame(a=c("a", NA, "b"), b=c("c", NA, "b"))
另一种方法是使用identical()
(它有一个很好的属性identical(NA, NA) = TRUE
)逐项循环:
假数据:
a=c("a",NA,"b")
b=c(NA,NA,"d")
df = data.frame(a, b, stringsAsFactors=FALSE)
代码:
count = 0
for(i in 1:nrow(df)){
count = count + identical(df[i,1],df[i,2])}
输出:
>count
>1