【问题标题】:filter many times a tibble过滤多次
【发布时间】:2019-11-02 21:59:34
【问题描述】:

我在 R 下使用 dplyr 遇到问题 我有一个包含 3 个列的小标题(id、人数、毕业人数) 我想做这个

tibble = filter (number of people == 2000 & number of graduated < 2) %>%
         filter (number of people == 3000 & number of graduated < 3) %>%
         filter (number of people == 4000 & number of graduated < 4) ...

直到我到达我的专栏的最大长度

然后我会做一个 bindrows 以便用这些行创建一个 tibble

但是我该怎么做呢?

【问题讨论】:

  • 这里有几个问题: 1、filter()的第一个参数是数据框,这里没有。 2. 一个接一个地连接多个过滤器是没有意义的。使用不同的过滤器并将它们分配给不同的数据框可能更有意义,但是从您的帖子中不清楚您要做什么。 3. 用一个常用的函数名来命名一个对象是个坏主意,比如tibble()。给它起一个不会混淆的名字,比如mydf

标签: r filter dplyr


【解决方案1】:

像这样的链接过滤器意味着您正在获取子集的子集的子集,等等。但这将立即为空,因为一行不能有 number_of_people == 2000 == 3000,对吧?也许您的意思是“或”而不是“和”?在没有查看数据的情况下很难推断出您正在尝试做什么,因为您的问题没有真正的意义。

这是我的最佳猜测:

# create some dummy data
data <- data.frame(
                number_of_people = 1000 * sample(1:10, 100, replace = TRUE),
                number_graduated = sample(1:10, 100, replace = TRUE)
                )

# keep rows where graduates < people/1000
data <- data[data$number_graduated < data$number_of_people/1000, ]

【讨论】:

  • 感谢您的回答 :) 它有效,但我需要使用 dplyr 来完成:/
  • 为什么?使用 dplyr 执行此操作有点像使用大锤推入图钉。
  • 终于不用dplyr了^^
猜你喜欢
  • 1970-01-01
  • 2013-08-03
  • 2015-08-26
  • 1970-01-01
  • 2017-07-13
  • 2021-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多