R将NA值转换为字符进行字符串比较



我有一个包含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

相关内容

  • 没有找到相关文章

最新更新