我查找了類似的問題,但無法找到根據不同列中的數值選擇行的答案。我有一個數據集看起來像這樣(總共包括24個研究/列和超過28.000行)R編程:根據不同列中的數值選擇行
header <- c("symbol", "gene1", "gene2", "gene3")
study1 <- c("0.06", "0.01", "NA", "NA")
study2 <- c("0.09", "NA", "0.02", "0.08", "0.07")
study3 <- c("0.09", "NA", "NA", "0.1")
DF<- data.frame(header, study1, study2, study3, stringsAsFactors=FALSE)
DF
ID study1 study2 study3
1 gene1 0.06 0.09 0.09
2 gene2 0.01 NA NA
3 gene3 NA 0.02 NA
4 gene4 NA 0.07 0.1
>
我想打一個新的data.frame包括所有列,但只有其中的行對於至少一項研究(即一列),其值< = 0.05。 NA可因爲我是一個R編程初學者被視爲> 0.05
,我只對一列開始寫代碼過濾簡單,通過採用正常工作「這」
new_DF<-DF[which(as.numeric(DF$study1)<=0.05),]
直到我在這裏對我自己來說非常高興:-)然而,我如何適應多列?我想包含一個通配符 「*」
new_DF<-DF[which(as.numeric(DF$study*)<=0.05),]
,但我得到一個錯誤,指出「錯誤:意外 ')' 中的 「new_DF <-DF [其中(as.numeric(DF $研究*)」 我也是。嘗試使用dplyd包,子集或grep的功能,但總能得到類似的錯誤的消息不同的東西。
誰能幫我? 非常感謝!
對不起以前的評論是錯誤:-) 我的預期產出是行的子集,所以第一個選項。 但是,我恐怕會鬆動1列中<= 0.05的行,但在其他情況下> 0.05,否? 我不完全理解你寫的代碼,認爲 - 「!!」是什麼意思?代表? 「!」是倒轉/消極我想,所以這會是雙重否定的?或者這是否意味着你拿走了所有行的總和,但考慮每個值本身? - [-1]意味着你不考慮第一列的選擇(因爲它是ID)? – khardies
@khardies我加了一些解釋。 – akrun
非常感謝,我知道我嘗試將此應用於類似問題:-) – khardies