簡體   English   中英

在 r 中選擇所有值 > 1 的行

[英]selecting all rows which has value > 1 in r

數據集我有一個數據,想要選擇所有在 r 中值 > 1 的行。 我試過 sel <- apply(data[,collist],1,function(row) "1" %in% row) 但它不起作用,給我一個完整的數據框,

[data set][1]

我如何對這些數據進行子集化?

謝謝

最后的注釋顯示了以下示例中使用的數據。 我已經更改了標題,因為問題中提供的標題很笨拙,並且刪除了減號列。

1)使用該數據,對於選擇任何列中帶有 1 的所有行的問題的正確答案是只選擇前兩個數據行,事實上,會發生什么:

subset(data, A == 1 | B == 1 | C == 1)
##       Sym A B C
## 1   ACAP3 0 0 1
## 2  ACTRT2 0 0 1

2)此版本不使用標題:

has1 <- rowSums(data == 1) > 0
data[has1, ]
##       Sym A B C
## 1   ACAP3 0 0 1
## 2  ACTRT2 0 0 1

3)雖然以上應該可以工作,但只檢查數字列會更安全一些,這些列可以像這樣完成:

has1 <- rowSums(data[-1] == 1) > 0
data[has1, ]
##       Sym A B C
## 1   ACAP3 0 0 1
## 2  ACTRT2 0 0 1

4)或者如果我們不知道哪些列是數字:

is.num <- sapply(data, is.numeric)
has1 <- rowSums(data[is.num] == 1) > 0
data[has1, ]
##       Sym A B C
## 1   ACAP3 0 0 1
## 2  ACTRT2 0 0 1

筆記

由於問題沒有以可重現的形式提供輸入,因此假設以這種形式顯示的輸入是:

Lines <- 'Hugo_Symbol "A - 3 A- A9J" "B - F2 - 7273 - 01" "C - FB - AAPP - 01"
ACAP3 0 0 - 1
ACTRT2 0 0 - 1
AGRN 0 0 - 0
ANKRD65 0 0 - 0
ATAD3A 0 0 - 0
'

data <- read.table(text = Lines, skip = 1, col.names = c("Sym", "A", "B", "X", "C"),
 colClasses = c(NA, NA, NA, "NULL", NA))

以上產生了這個:

data
##       Sym A B C
## 1   ACAP3 0 0 1
## 2  ACTRT2 0 0 1
## 3    AGRN 0 0 0
## 4 ANKRD65 0 0 0
## 5  ATAD3A 0 0 0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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