从月开始删除某些天数

时间:2018-05-02 18:30:29

标签: dataframe

我正在寻找一个代码,它只给出了包含每个月第一天的行

 (`1999-01-01`, `1999-02-01`, ..., `2010-11-01`, `202010-12-01`).

有没有人知道如何解决这个问题?

我真的很感谢你的帮助!

3 个答案:

答案 0 :(得分:1)

假设您的日期列已正确格式化为日期对象,您可以使用dates_i_want <- seq.Date(as.Date("2008-01-01"), as.Date("2017-12-01"), by = "month") result <- subset(data, date %in% dates_i_want) 列落在该月的第一天的条件对您的数据框进行子集化,如下所示:

bundle.js

答案 1 :(得分:0)

您可以使用索引编制逻辑索引来显示数据框中哪些条目是本月的第一个条目。使用seq.Date创建索引:

# create index
ind <- seq.Date(as.Date("2008-01-01"), as.Date("2017-12-01"), by = "month")
# index the dataframe 
df2 <- df[df[, 1] %in% ind, ]

这是在df向量中找到ind中条目的行。对于它的价值,这种方法比subset方法略快(15%)。

# dummy data 
df <- data.frame("x" = seq.Date(as.Date("2008-01-01"), as.Date("2017-12-01"), by = "day"))

答案 2 :(得分:0)

根据Erik Kornet的回复,您可以创建一个序列,然后使用它来过滤您想要的行。假设一个名为x的数据框,其变量为date:

myseq <- seq(as.Date("2008-01-01"), as.Date("2017-12-01"), by= "month")
for(k in 1:length(myseq)){
  temp <- (x[x$date==myseq[k],])
  x3 <- rbind(x3, temp)
}