[英]Special use of colSums(), na.rm = TRUE only if 1 or fewer are missing
我需要總結的一些列的data.frame與說的規則,一列是求和以NA
如果超過一個觀察缺少NA
如果只有1或更低失蹤了,無論是要進行求和。
說我有一些這樣的數據,
dfn <- data.frame(
a = c(3, 3, 0, 3),
b = c(1, NA, 0, NA),
c = c(0, 3, NA, 1))
dfn
a b c
1 3 1 0
2 3 NA 3
3 0 0 NA
4 3 NA 1
然后我應用我的規則,並對缺失的NA
少於2的列求和。 所以我得到這樣的東西。
a b c
1 3 1 0
2 3 NA 3
3 0 0 NA
4 3 NA 1
5 9 NA 4
我玩過colSums(dfn, na.rm = FALSE)
和colSums(dfn, na.rm = TRUE)
。 在我的真實數據中,多於三列,多於4行。 我想我可以以某種方式計算失蹤人數並將其用作規則?
我不認為您可以單獨使用colSums
來做到這colSums
,但是可以使用ifelse
來添加其結果:
colSums(dfn,na.rm=TRUE) + ifelse(colSums(is.na(dfn)) > 1, NA, 0)
a b c
9 NA 4
@James'Answer沒問題,但是這是一種更簡潔的方法:
colSums(apply(dfn, 2, function(col) replace(col, match(NA, col), 0)))
# a b c
# 9 NA 4
match(NA, col)
返回match(NA, col)
中第一個NA
的索引, replace
將其替換為0
並返回新列, apply
返回包含所有新列的matrix
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.