我正在构建一个数据集,希望能够从第一个日期开始到最后一个日期添加一个星期数到数据集中。我正在使用它来汇总更大的数据集,最终我希望按周进行汇总。
使用此示例:
library(dplyr)
df <- tibble(Date = seq(as.Date("1944/06/1"), as.Date("1944/09/1"), "days"),
Week = nrow/7)
# A tibble: 93 x 2
Date Week
<date> <dbl>
1 1944-06-01 0.143
2 1944-06-02 0.286
3 1944-06-03 0.429
4 1944-06-04 0.571
5 1944-06-05 0.714
6 1944-06-06 0.857
7 1944-06-07 1
8 1944-06-08 1.14
9 1944-06-09 1.29
10 1944-06-10 1.43
# … with 83 more rows
这绝对是不对的。另外,我的真实数据集不是按顺序构建的,两周之间缺少很多天,因此无法进行连续的连续计数。
理想的最终结果是根据实际日期(而不是使用seq_along()类型的结果硬编码)添加一个“星期”列
答案 0 :(得分:1)
您可以将所有File
值与第一个public async Task<byte[]> OnPostExport(int year)
{
//logic
return filebytearray;
}
var dt = await _exportService.OnPostExport(1);
return File(dt, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", sFileName);
相减,并使用Date
在“周”中计算出差值,Date
将所有值相加并加1开始从1开始的计数器。
difftime
要在floor
管道中使用此代码,您可以
df$week <- floor(as.numeric(difftime(df$Date, df$Date[1], units = "weeks"))) + 1
df
# A tibble: 93 x 2
# Date week
# <date> <dbl>
# 1 1944-06-01 1
# 2 1944-06-02 1
# 3 1944-06-03 1
# 4 1944-06-04 1
# 5 1944-06-05 1
# 6 1944-06-06 1
# 7 1944-06-07 1
# 8 1944-06-08 2
# 9 1944-06-09 2
#10 1944-06-10 2
# … with 83 more rows
数据
dplyr
答案 1 :(得分:1)
与Ronak相似的解决方案,但使用lubridate
:
library(lubridate)
(df <- tibble(Date = seq(as.Date("1944/06/1"), as.Date("1944/09/1"), "days"),
week = interval(min(Date), Date) %>%
as.duration() %>%
as.numeric("weeks") %>%
floor() + 1))