R:根据每个数据框的列值过滤数据框列表

igetnqfo  于 2023-06-27  发布在  其他
关注(0)|答案(1)|浏览(133)

我正在寻找一种方法来过滤的基础上,他们的列值dataframes列表。下面是我的实际dataframe的一个小例子:

DF <- data.frame(Company=c('Alpha', 'Alpha', 'Alpha', 'Beta', 'Beta', 'Gamma', 'Gamma'),
              Location=c('NY', 'NY', 'CHI', 'LA', 'CHI','LA', 'LA' ),
              ID=c('1234', '1234', '1234', '5678', '5678', '2468', '2468'),
              Charge=c(25,25,51, 60,60, 15, 15))

我使用了一个split函数来创建一个基于Company的 Dataframe 列表

List<- DF %>% base::split(., .$Company)

我想根据Charge列过滤列表中的 Dataframe 。我只想保留Charge列的总和大于或等于100的 Dataframe 。我使用了这个代码:

Filtered_List <- sapply(List, function(x) sum( x$Charge )>=100)

然而,这段代码并没有过滤,它似乎只是在分配“TRUE/FALSE”值。我认为问题在于我如何使用apply函数,但我可以使用一些输入。谢谢!

7vux5j2d

7vux5j2d1#

使用sapply()索引列表:

Filtered_List <- List[sapply(List, \(x) sum(x$Charge) >= 100)]

结果:

$Alpha
  Company Location   ID Charge
1   Alpha       NY 1234     25
2   Alpha       NY 1234     25
3   Alpha      CHI 1234     51

$Beta
  Company Location   ID Charge
4    Beta       LA 5678     60
5    Beta      CHI 5678     60

相关问题