在R中,如何从已经拆分的组中按行过滤数据?

时间:2013-07-30 16:28:05

标签: r split

所以我将我的数据集分成几组,我想知道如何从百分比列中找到大于或等于值70的行(注意:数据框中还有其他列,它们是只是没有显示)

gdata <- split(data, Opportunity.Name)

Dataframe看起来像这样(有更多的组):

Opportunity.Name:    Percentage
Bob                  50
Bob                  60
Bob                  20
Bob                  80
Bob                  90
Bob                  100
Jon                  100
Jon                  90

gdata$'Bob'     
Opportunity.Name  Percentage
Bob                  50
Bob                  60
Bob                  20
Bob                  80
Bob                  90
Bob                  100

我想应用一些功能,允许我过滤掉50,60和20%的百分比行并保留其他值(并让它为我创建的所有组执行此操作)。谢谢!

2 个答案:

答案 0 :(得分:2)

试试这个:

lapply(gdata, function(x){x[x$Percentage>=70,]})

给出:

$Bob
  Opportunity.Name Percentage
4              Bob         80
5              Bob         90

$Jon
  Opportunity.Name Percentage
6              Jon        100
7              Jon         90

更新:要保留百分比为零的记录,请使用管道运算符添加or子句:

lapply(gdata, function(x){x[x$Percentage>=70 | x$Percentage==0,]})

或者,如果您愿意,可以使用subset语法来获得相同的结果:

lapply(gdata, function(x){subset(x, Percentage>=70 | Percentage==0)})

答案 1 :(得分:0)

如果您非常具体地了解您不想要的值,可以使用

d <- subset(gdata, Percentage != 50 & Percentage != 60 & Percentage !=20)