如何从整体中提取数据框的一部分?

时间:2019-06-20 05:50:57

标签: r dataframe select filter

我的数据框“ y”

didUpdateWidget()

我想提取仅在“ steps”和“ interval”列中month == 11&day == 1的行。

无效代码

 steps date       interval
   <dbl> <date>        <int>
 1     0 2012-10-01        0
 2     0 2012-10-01        5
 3     0 2012-10-01       10
 4     0 2012-10-01       15
 5     0 2012-10-01       20
 6     0 2012-10-01       25
 7     0 2012-10-01       30
 8     0 2012-10-01       35
 9     0 2012-10-01       40
10     0 2012-10-01       45
# ... with 17,558 more rows

我也尝试过使用先选择然后过滤的组合,但是当我们选择()指定列“ steps”和“ interval”时,由于无法删除,我无法在Filter()中应用条件列“日期”。

有人可以向我解释解决此问题的简便方法吗?

3 个答案:

答案 0 :(得分:2)

我假设month()day()来自lubridate。使用dplyr::filterdplyr::select更容易进行此操作。

类似的东西应该可以工作(很难在没有更好的示例数据的情况下进行测试):

library(dplyr)
library(lubridate)

y %>% filter(month(date) == 11,
             day(date) == 1) %>%
  select(steps, interval)

答案 1 :(得分:2)

使用基数R,我们可以formatdatesubset

select

答案 2 :(得分:1)

另一种方法是删除带有str_removefilterselect列的“年份”部分

library(dplyr)
library(stringr)
Y %>% 
  filter(str_remove(date, "^\\d{4}-") == '11-01') %>%
  select(steps, interval)