我有一個像這樣的 data.frame:
dat <- data.frame(Subject = c("Andy","Andy","Bertha","Charlie","Charlie","Charlie"),
Sex = c("male","male","female","male","male","male"),
Measure1 = c(1,NA,2,1,NA,NA),
Measure2 = c(8,NA,7,6,NA,6))
出于技術原因,每個主題都可以有多個觀察結果,盡管并非每個觀察結果都必須包含有意義的資料。在我的示例資料中,我想洗掉第 2 行和第 5 行,條件是這些行除了主題的核心資料(“姓名”和“性別”)之外都是“NA”。
我只找到了完全空行或指向特定列的解決方案。在我的真實資料中,大約有 1.000 列。同樣,如果除了特定變數之外,行中沒有資料,我想洗掉整行。一個tidyverse-溶液將是非常受歡迎的,但不是必須的。
非常感謝大家!
uj5u.com熱心網友回復:
簡單
dat[rowMeans(is.na(dat[,grep("Measure",colnames(dat))]))<1,]
Subject Sex Measure1 Measure2
1 Andy male 1 8
3 Bertha female 2 7
4 Charlie male 1 6
6 Charlie male NA 6
uj5u.com熱心網友回復:
您可以嘗試創建一個列來計算每行的 NA 數量。然后使用 tidyverse 語法,您可以過濾您的行不接受的 NA 數量。
dat$na_count <- apply(dat, 1, function(x) sum(is.na(x)))
dat2 <- dat %>% filter(na_count<2)
uj5u.com熱心網友回復:
然而,另一種解決方案:
dat %>%
filter(!(is.na(Measure1) & is.na(Measure2)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/326962.html
標籤:r
上一篇:Matlabregex${numberFun($4)}。-對于輸入引數型別為'char'的函式'numberFun'未定義。
