R 在具有NA值的列中计算满足条件的元素数

R 在具有NA值的列中计算满足条件的元素数,r,sum,na,R,Sum,Na,我得到了一个包含“a”、“B”和NA值的矩阵,我想计算每列中“a”或“B”或NA值的数量 sum(mydata[ , i] == "A") 及 适用于不带NA的列。对于包含NA的列,我可以使用sum(is.NA(mydata[,I])来计算NA的数量。在这些列中sum(mydata[,I]=“A”)返回NA作为结果而不是数字 如何计算包含NA值的列中“A”值的数量 谢谢你的帮助 例如: > mydata V1 V2 V3 V4 V2 "A" "A" "A" "A" V3

我得到了一个包含“a”、“B”和
NA
值的矩阵,我想计算每列中“a”或“B”或
NA
值的数量

sum(mydata[ , i] == "A")

适用于不带NA的列。对于包含
NA
的列,我可以使用
sum(is.NA(mydata[,I])
来计算
NA
的数量。在这些列中
sum(mydata[,I]=“A”)
返回
NA
作为结果而不是数字

如何计算包含
NA
值的列中“A”值的数量

谢谢你的帮助

例如:

> mydata
    V1  V2  V3  V4 
V2 "A" "A" "A" "A"
V3 "A" "A" "A" "A"
V4 "B" "B" NA  NA 
V5 "A" "A" "A" "A"
V6 "B" "A" "A" "A"
V7 "B" "A" "A" "A"
V8 "A" "A" "A" "A"

sum(mydata[ , 2] == "A")
# [1] 6

sum(mydata[ , 3] == "A")
# [1] NA

sum(is.na(mydata[ , 3]))
# [1] 1

函数
sum
(与R中的许多其他数学函数一样)接受一个参数
na.rm
。如果设置
na.rm=TRUE
,R将在进行计算之前删除所有
na

尝试:


您可以使用
一次计算所有值。

展开@Andrie的答案

mydata <- matrix(c(rep("A", 8), rep("B", 2), rep(NA, 2), rep("A", 4),
  rep(c("B", "A", "A", "A"), 2), rep("A", 4)), ncol = 4, byrow = TRUE)

myFun <- function(x) {
  data.frame(n.A = sum(x == "A", na.rm = TRUE), n.B = sum(x == "B",
    na.rm = TRUE), n.NA = sum(is.na(x)))
}

apply(mydata, 2, myFun)

mydata不确定这是否是您要找的。RnewB也是,所以请检查这是否有效。
行数和行数之间的差异将告诉您NA项的数量

colSums(!is.na(mydata))

另一种可能是转换因子中的列,然后使用函数摘要。示例:


vec一种快速的方法是对变量进行汇总统计:

表(mydata$my_变量)的摘要(mydata$my_变量)

这将为您提供缺失变量的数量

希望这有帮助

mydata <- matrix(c(rep("A", 8), rep("B", 2), rep(NA, 2), rep("A", 4),
  rep(c("B", "A", "A", "A"), 2), rep("A", 4)), ncol = 4, byrow = TRUE)

myFun <- function(x) {
  data.frame(n.A = sum(x == "A", na.rm = TRUE), n.B = sum(x == "B",
    na.rm = TRUE), n.NA = sum(is.na(x)))
}

apply(mydata, 2, myFun)
colSums(!is.na(mydata))