0

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

gdata <- split(data, Opportunity.Name)

数据框看起来像这样(有更多的组):

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 百分比的行并保留其他值(并让它为我创建的所有组执行此操作)。谢谢!

4

2 回答 2

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)})
于 2013-07-30T16:38:06.663 回答
0

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

d <- subset(gdata, Percentage != 50 & Percentage != 60 & Percentage !=20)
于 2013-07-30T16:58:23.830 回答