【问题标题】:Subsetting data of multiple years多年的子集数据
【发布时间】:2020-08-22 09:53:00
【问题描述】:

我有一个数据集,其中包含 2003 年至 2019 年的每日价格数据。我想从中创建一个子集,其中包含指定年份的数据,例如 2011 年至 2015 年。我正在使用子集函数,但是当我提到年份间隔时,子集数据仅包含 7 天内 1 天的数据,而不是上述年份的所有天数。

sub <- subset(data, format(as.Date(data$Date),"%Y")==c(2011:2015))

我尝试过 split 函数,但它创建了一个数据框列表,我不知道如何在 ggplot 或统计分析中使用它。

sub <- split(data, format(as.Date(data$Date),"%Y")==c(2011:2015))

是否有更好的子集方法,以便我能够提取所需年份的每日数据?

【问题讨论】:

    标签: r split subset


    【解决方案1】:

    假设Date是标准格式,你可以试试:

    sub_data <- subset(data, as.integer(format(as.Date(Date),"%Y")) %in% 2011:2015)
    

    或者使用dplyrlubridate

    library(dplyr)
    library(lubridate)
    
    sub_data <- data %>% filter(year(ymd(Date)) %in% 2011:2015)
    

    【讨论】:

    • 第一个建议效果很好,谢谢!有没有解释为什么会发生这种情况?
    • 如果你想比较向量的值,你应该使用%in%== 比较元素的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多