Dataframe 从月份中删除某些天

Dataframe 从月份中删除某些天,dataframe,Dataframe,我正在寻找一个代码,它只提供包含每个月第一天的行 (`1999-01-01`, `1999-02-01`, ..., `2010-11-01`, `202010-12-01`). 有人知道如何解决这个问题吗 我非常感谢你的帮助 假设您的日期列格式正确地设置为日期对象,您可以在date列位于每月第一个的条件下对数据框进行子集,如下所示: dates_i_want <- seq.Date(as.Date("2008-01-01"), as.Date("2017-12-01"), by =

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

 (`1999-01-01`, `1999-02-01`, ..., `2010-11-01`, `202010-12-01`).
有人知道如何解决这个问题吗


我非常感谢你的帮助

假设您的日期列格式正确地设置为日期对象,您可以在
date
列位于每月第一个的条件下对数据框进行子集,如下所示:

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)

dates\u i\u want您可以使用索引,制作逻辑索引以显示数据框中哪些条目是每月的第一个条目。使用
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, ]

基于Erik Kornet的响应,您可以创建一个序列,然后使用它来筛选所需的行。假设一个名为x的数据帧具有日期变量:

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)
}

myseq您可以通过
seq.Date()
函数来实现这一点,例如:
seq.Date(as.Date(“2008-01-01”)、as.Date(“2017-12-01”)、by=“month”)
在请求帮助时,您应该包括一个简单的示例输入和所需的输出,用于测试和验证可能的解决方案。数据的图片并不是特别有用。这根本不能改善Erik的解决方案的可读性,而且速度也会慢得多。R的第一条规则:永远不要增长向量。Snoram,我写这篇文章是为了回应他的评论,他的评论只提供了一个序列,所以这是对他第一次评论的补充。同意这将比他发布的解决方案慢。不知道你的第一条规则是从哪里来的,毫无意义。谢谢你的好意。这不完全是一个规则,但如果可以避免的话,它被认为是良好的做法。也许这对你来说还没有意义,但你可以看看这里:
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)
}