在日期列中标识星期并每周生成自动数据框子集

时间:2019-02-19 08:07:10

标签: r dataframe

我想使计算运输时间的代码自动化。我希望代码可以给我4个月的时间,您可以从一年的大量读数中进行选择,并在四个月的最后一个月内将其拆分,仅描述数据子集(描述不是问题)。

从数据集中为选定的月份生成子集不是问题,因为我可以定义月份。 但是我挣扎的是上个月的3/4周。我需要自动识别它们,然后生成子集。 (我希望在识别后应该更容易生成子集。)

我可以给你一些我的数据的模型。

dates <- as.Date(c("2019-01-07", "2019-01-08", "2019-01-09", 
               "2019-01-15", "2019-01-21"))

number <- c(12,13,14,15,20)

df <- data.frame(number, dates)

原始df包含60个变量,但是我相信这个简单的模型可以为任务提供足够的信息。

我对r还是很陌生,我不知道如何解决该问题,我将向您展示如何用几个月来解决它,但是正如所说的,在这种情况下,它们是定义好的。

function(data = df, m1 = "01" , m2 = "02") {

Monat1 <- subset(data, format.Date(dates  , "%m") == m1)

谢谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用strftime函数

strftime(df$dates, format = "%W")

在rstudio中使用

?strftime()

查看可从日期或POSIXCT对象提取的所有不同值

答案 1 :(得分:0)

您可以使用碱R和润滑脂来完成

数据

dates <- as.Date(c("2019-01-07", "2019-01-08", "2019-01-09", 
                   "2019-01-15", "2019-01-21"))

number <- c(12,13,14,15,20)

df <- data.frame(number, dates)
str(df)

答案

library(lubridate)
df$condition <- ifelse(month(df$dates) == month(Sys.Date())-1,week(df$dates),"-")

condition将检查日期是否小于一个月前,如果是,它将为您提供该特定值的星期数