R语言 当两列中包含数值和NA值时,如何计算两列之间的差值?

mepcadol  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(303)

我有一个名为
它有23列和大约400行。最后两个集中列是C1和C2
它们包含数值以及NA值(两列都有NA的行已被删除)
我需要计算C1和C2之间的绝对差(即没有负或正网络)
我通常使用此代码来计算差异,但我不知道如何自定义它忽略NA的一列,并产生绝对值
a$diff〈-(a$C1 - a$C2)
用另一个值甚至零代替NA是不可行的。我需要看到C1和C2之间差异的趋势。此外,浓度值本身可能为零。
我在想某种条件语句!is.na,但我不知道在哪里插入它或如何。就像在做C1和C2的比较,既不持有NA,然后做计算。

pgky5nke

pgky5nke1#

这对于一个评论来说太长了:
在我看来,如果你没有C1或C2的数据,你希望省略它。如果是这种情况,你可以像你有它一样进行计算,只需添加对abs()的调用,然后执行a <- na.omit(a)。这将只保留没有任何NA的行。我看到你有23列,如果您只对这两个数据感兴趣,那么您应该对数据进行子集化,以便另一列中的NA不会给您带来问题。

a <- data.frame(C1=c(1,2,NA,3,4),
                C2=c(NA,2,3,4,5),
                other1=rep(NA,5),
                other2=rep(1,5))
a

a$diff <- abs(a$C1-a$C2)
a

na.omit(a) # NA's in other columns cause problems!

a <- a[c('C1','C2','diff')]
# subset(a, select = c('C1','C2','diff')) # using subset if you prefer
a

na.omit(a)

相关问题