从Date对象中提取两周的那一天?

时间:2015-12-15 03:05:06

标签: r date

在我的分析中,我必须从Date对象中提取一周的日期和每两周的日期数。我希望结果如下所示

Date                 weekday         fortnightly    
2010-05-01           Saturday            1 
2010-05-02           Sunday              2
.
.
2010-05-14           Friday              14 
2010-05-15           Saturday            1
2010-05-16           Sunday              2
.
.
2010-05-28           Friday              14  
2010-05-29           Saturday            1
2010-05-30           Sunday              2
2010-05-31           Monday              3  
2010-06-1            Tuesday             4
2010-06-2            Wednesday           5

我将工作日提取如下

df$weekday <- weekdays(as.Date(df$Date))

但是,我不知道我可以使用哪个功能来提取每两周的日期数。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

我们可以尝试

(seq_along(v1)-1)%%14 + 1L
#[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14  1  2  3  4  5  6  7  8  9 10 11
#[26] 12 13 14  1  2  3  4  5  6  7  8  9 10 11 12 13 14  1  2  3  4  5  6  7  8
#[51]  9 10 11 12 13 14  1  2  3  4

数据

v1 <- seq(as.Date('2010-05-01'), length.out=60, by = '1 day')

答案 1 :(得分:2)

这是你想要的吗?

将@ akrun的数据作为参考

v1 <- seq(as.Date('2010-05-01'), length.out=60, by = '1 day')
c(rep(seq(1, 14, 1), floor(length(v1)/14)), 1:(length(v1)%%14))

# [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14  1  2  3  4  5  6  7  8  9 10 11 12 13 14  1  2  3  4
# [33]  5  6  7  8  9 10 11 12 13 14  1  2  3  4  5  6  7  8  9 10 11 12 13 14  1  2  3  4

重复1到14的数字序列length(v1)/14次,然后追加剩余的数字。

因此,如果在您的情况下它是一个数据框,那么您可以尝试,

c(rep(seq(1, 14, 1), floor(nrow(df)/14)), 1:(nrow(df)%%14))

会再次生成相同的序列。