dataset我有一个数据,想要选择所有值为>的行1中的r。 我试过了 sel< - apply(data [,collist],1,function(row)" 1"%in%row) 但它不起作用,给我整个数据框,
[data set][1]
我如何对这些数据进行子集化?
谢谢
答案 0 :(得分:0)
最后的注释显示了以下示例中使用的数据。我已经改变了标题,因为问题中提供的标题是笨拙的并删除了减号标记列。
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