簡體   English   中英

特殊使用colSums(),僅當缺少1個或更少的時候na.rm = TRUE

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM