我有一个带有“A”,“B”和NA
值的矩阵,我想计算每个值中“A”或“B”或NA
的数量列。
sum(mydata[ , i] == "A")
和
sum(mydata[ , i] == "B")
适用于没有NA
的列。对于包含NA
的列,我可以使用NA
计算sum(is.na(mydata[ , i])
的数量。在这些列中,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
答案 0 :(得分:7)
函数sum
(与R中的许多其他数学函数一样)采用参数na.rm
。如果设置na.rm=TRUE
,则R会在执行计算之前删除所有NA
值。
尝试:
sum(mydata[,3]=="A", na.rm=TRUE)
答案 1 :(得分:3)
不确定这是不是你所追求的。 RnewB也是如此,检查这是否有效。 行数和行数之间的差异将告诉您NA项目的数量。
colSums(!is.na(mydata))
答案 2 :(得分:0)
扩展@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)
答案 3 :(得分:0)
另一种可能性是在一个因子中转换列然后使用函数摘要。例如:
VEC&LT; -C(&#34; A&#34;&#34; B&#34;&#34; A&#34;,NA)
摘要(as.factor(VEC))
答案 4 :(得分:0)
快速执行此操作的方法是对变量执行摘要统计:
表格的汇总(mydata $ my_variable)(mydata $ my_variable)
这将为您提供缺失变量的数量。
希望这有帮助
答案 5 :(得分:-1)
您可以使用table
一次统计所有值。