我正在寻找一个代码,它只给出了包含每个月第一天的行
(`1999-01-01`, `1999-02-01`, ..., `2010-11-01`, `202010-12-01`).
有没有人知道如何解决这个问题?
我真的很感谢你的帮助!
答案 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)
}