Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中进行SUMIFS_R_Sumifs - Fatal编程技术网

如何在R中进行SUMIFS

如何在R中进行SUMIFS,r,sumifs,R,Sumifs,数据: 如果df1$date中的日期在df2$date和df2$date范围内,我想为df2$date中的每个日期计算df1$Value的总和 因为我需要计算每周的总和请查看库lubridate和dplyr,这两种方法非常常见 set.seed(42) df1 = data.frame( Date = seq.Date(as.Date("2018-01-01"),as.Date("2018-01-30"),1), value = sample(1:30), Y = sample(

数据:

如果
df1$date
中的日期在
df2$date
df2$date
范围内,我想为
df2$date
中的每个日期计算df1$Value的总和


因为我需要计算每周的总和

请查看库lubridate和dplyr,这两种方法非常常见

 set.seed(42)

df1 = data.frame(
  Date = seq.Date(as.Date("2018-01-01"),as.Date("2018-01-30"),1),
  value = sample(1:30),
  Y = sample(c("yes", "no"), 30, replace = TRUE)
)

df2 = data.frame(
  Date = seq.Date(as.Date("2018-01-01"),as.Date("2018-01-30"),7)
)
库(lubridate)
图书馆(dplyr)
df1$last_week_day%group_by(last_week_day)%>%汇总(week_值=总和(值))

查看库lubridate和dplyr,这两种都很常见

 set.seed(42)

df1 = data.frame(
  Date = seq.Date(as.Date("2018-01-01"),as.Date("2018-01-30"),1),
  value = sample(1:30),
  Y = sample(c("yes", "no"), 30, replace = TRUE)
)

df2 = data.frame(
  Date = seq.Date(as.Date("2018-01-01"),as.Date("2018-01-30"),7)
)
库(lubridate)
图书馆(dplyr)
df1$last_week_day%group_by(last_week_day)%>%汇总(week_值=总和(值))
使用data.table,创建范围开始/结束,然后在重叠处合并,然后在组上求和:

library(lubridate)
library(dplyr)

df1$last_week_day <- ceiling_date(df1$Date, "week") + 1
df1 %>% group_by(last_week_day) %>% summarize(week_value = sum(value))
库(data.table)
df1$start使用data.table,创建一个范围开始/结束,然后在重叠处合并,然后在组上求和:

library(lubridate)
library(dplyr)

df1$last_week_day <- ceiling_date(df1$Date, "week") + 1
df1 %>% group_by(last_week_day) %>% summarize(week_value = sum(value))
库(data.table)

df1$start我们可以使用
fuzzyjoin

library(data.table)

df1$start <- df1$Date
df1$end <- df1$Date

df2$start <- df2$Date
df2$end <- df2$Date + 6

setDT(df1, key = c("start", "end"))
setDT(df2, key = c("start", "end"))

foverlaps(df1, df2)[, list(mySum = sum(value)), by = Date ]
#          Date mySum
# 1: 2018-01-01   138
# 2: 2018-01-08    96
# 3: 2018-01-15    83
# 4: 2018-01-22   109
# 5: 2018-01-29    39
库(dplyr)
库(模糊连接)
df2$EndDate=`,`%
分组依据(日期y)%>%总结(总结=总结(价值))
#一个tibble:5x2
日期:y和
1 2018-01-01   138
2 2018-01-08    96
3 2018-01-15    83
4 2018-01-22   109
5 2018-01-29    39

我们可以使用
fuzzyjoin

library(data.table)

df1$start <- df1$Date
df1$end <- df1$Date

df2$start <- df2$Date
df2$end <- df2$Date + 6

setDT(df1, key = c("start", "end"))
setDT(df2, key = c("start", "end"))

foverlaps(df1, df2)[, list(mySum = sum(value)), by = Date ]
#          Date mySum
# 1: 2018-01-01   138
# 2: 2018-01-08    96
# 3: 2018-01-15    83
# 4: 2018-01-22   109
# 5: 2018-01-29    39
库(dplyr)
库(模糊连接)
df2$EndDate=`,`%
分组依据(日期y)%>%总结(总结=总结(价值))
#一个tibble:5x2
日期:y和
1 2018-01-01   138
2 2018-01-08    96
3 2018-01-15    83
4 2018-01-22   109
5 2018-01-29    39
df%>%groupby(周=削减(日期,“周”))%%>%mutate(周收入=总和(收入))
我尝试了这个方法,效果很好,但在我的情况下,我希望一周从一个特定的日期开始,而不总是周一。
df%>%groupby(周=削减(日期,“周”)%%>%mutate(周收入=总和(收入))
我尝试了这个方法,效果很好,但我希望一周从某个特定日期开始,而不总是周一。