计算数据框中的特定值并创建具有它的总和的新列

时间:2018-03-01 10:34:47

标签: r data-manipulation

嗨我已计算整个数据帧中NAs(缺失值)的出现总和,并使用代码将其保存到新列。

df$NAS<-sapply(df, function(x) sum(is.na(x)))
a1<-data.frame(a)

我想知道我是否想要获得列中特定条目的出现总和,例如。列中的“未指定”然后如何填充此代码或任何其他选项来执行此操作。

1 个答案:

答案 0 :(得分:0)

简答:

sapply(df, function(x) sum(x=='unspecified', rm.na=TRUE))

<强>解释

函数is.na(x)返回带有TRUEFALSE条目的向量,具体取决于值是否为NA。通过对该向量求和,我们得到向量中TRUE的数量。这就是你现在拥有的。

如果我们使用显示相同行为但is.na(x)以外的值的函数替换NA,我们就解决了您的问题。

最明显的方法是检查每个值是否等于&#39;未指定&#39;:

val_check <- function(x) x == 'unspecified'

如果我们在sapply中使用此内容并对其进行总结,我们就完成了,对吧?现在,还有一件事会造成麻烦,那就是NA的发生。对包含NA的向量求和会产生NA

sum(c(1, 2, 3, NA))
# [1] NA

通过添加选项na.rm = TRUE,我们克服了这个问题:

sum(c(1, 2, 3, NA), na.rm = TRUE)
# [1] 7

因此,sapply(df, function(x) sum(x=='unspecified', rm.na=TRUE))是您正在寻找的答案