按不同行的行名对数据框进行子集筛选

11

我需要根据数据框中的名称对行进行子集化。我尝试了以下代码,但它不起作用。

Name  plot  
12     25
22     23 
14     12 
16     22
23     54

DF.new <- subset(DF, rownames== c("12" , "16"))

DF$Name can be just Name - G. Grothendieck
“Not working”并不是很清楚。具体的错误信息或输出会更有用。同时,提供一个你想要输出的具体示例(我假设是Name为12或16的行?)。还要注意检查Name列是数字还是字符。如果是数字,在使用%in%时需要将数字的引号去掉。 - Eric Watt
1个回答

19

使用 dplyr

library(dplyr)
DF <- data.frame(row.names=c("12a", "22a", "13a"), Name=c("12","22","13"), plot=c(25,18,9))

如果您想按数据框列“Name”进行筛选,则:

DF.new -> DF %>% filter(Name %in% c("12", "16"))

如果您想按df的实际row.names进行过滤,则:

DF.new -> DF %>% filter(row.names(DF) %in% c("12a","13a"))

或者,使用基本的R语言:

DF.new -> DF[DF$Name %in% c("12","13"), ] 或者

DF.new -> DF[row.names(DF) %in% c("12a","13a"),]


然而,这并不能保持输出顺序。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接