[英]Rowwise indicator if all observations are NA
我想指出給定行中的所有觀察結果是否都是NA
。 例如,使用以下數據:
dat <- tibble::tribble(
~x, ~y, ~z,
1, 2, NA,
1, 2, 3,
NA, NA, NA,
NA, NA, NA
)
dat
# A tibble: 4 x 3
x y z
<dbl> <dbl> <dbl>
1 1 2 NA
2 1 2 3
3 NA NA NA
4 NA NA NA
我想創建一個新列( allisna
)來指示是否所有觀察結果都是 NA。 注意:我想使用dplyr
來執行此操作(如果需要,可以使用其他tidyverse
函數,而不是像apply()
這樣的基本 R 函數。
我有以下解決方案,但我更喜歡在mutate
內部使用rowwise()
和另一個dplyr
function 調用的解決方案。
library(dplyr)
dat %>%
mutate(allisna = apply(tmp, 1, function(x){
case_when(all(is.na(x)) ~ 1,
TRUE ~ 0)
}))
最終產品應該是:
# A tibble: 4 x 4
x y z allisna
<dbl> <dbl> <dbl> <dbl>
1 1 2 NA 0
2 1 2 3 0
3 NA NA NA 1
4 NA NA NA 1
在基礎 R 不使用apply
你可以做
dat$allisna <- +(rowSums(!is.na(dat)) == 0)
想出了一個解決方案(但我願意並且會獎勵更多:):
dat %>%
rowwise() %>%
mutate(allisna = case_when(all(is.na(c_across(everything()))) ~ 1,
TRUE ~ 0))
編輯以包括@RonakShah 的答案
dat %>%
mutate(allisna = as.numeric(rowSums(!is.na(.)) == 0))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.