首页 > 解决方案 > 如何将数据集子集到特定年份?

问题描述

标签: rdataframedatesubset

解决方案


如果没有适当的可重现示例数据集,我无法确定您在追求什么,但是......将以下数据框作为测试:

x <- data.frame(
  "Date" = as.Date(c("2016-01-01", "2015-05-12", "2016-06-16"), format = "%Y-%m-%d"),
  "Crime" = LETTERS[1:3])

这使:

> x
        Date Crime
1 2016-01-01     A
2 2015-05-12     B
3 2016-06-16     C

这可以是创建逻辑向量的子集,由format(x$Date, "%Y") == "2016"我将日期格式更改为年份生成,并在 data.frame 的线性搜索中使用它来返回逻辑向量的元素为“ TRUE”的行,如下所示:

> x[format(x$Date, "%Y") == "2016", ]
        Date Crime
1 2016-01-01     A
3 2016-06-16     C

x[format(x$Date, "%Y") == "2016", ]

给予:

> x[format(x$Date, "%Y") == "2016", ]
        Date Crime
1 2016-01-01     A
3 2016-06-16     C

或者,您可以使用 dplyr 函数filter()

library(tidyverse)
# Route 1. Implement filter() the base R way
filter(x, format(x$Date, "%Y") == "2016")
# Route 2. Use filter() the tidyverse way
x %>% filter(format(x$Date, "%Y") == "2016")

推荐阅读