R 从累积数据中获取反向关联数据?

R 从累积数据中获取反向关联数据?,r,diff,cumsum,R,Diff,Cumsum,我有一个数据框,其中有日期数据和累计计数。 我正在尝试做一个与cumsum相反的操作,以获得每日计数,但同时也获得每组计数。 我试图从数据帧A转到数据帧B。 我正在使用R和tidyr 代码如下: df <- data.frame(cum_count = c(5, 14, 50, 5, 14, 50), state = c("Alabama", "Alabama", "Alabama", "NY", "NY", "NY"),

我有一个数据框,其中有日期数据和累计计数。 我正在尝试做一个与cumsum相反的操作,以获得每日计数,但同时也获得每组计数。 我试图从数据帧A转到数据帧B。 我正在使用R和
tidyr

代码如下:


df <- data.frame(cum_count = c(5, 14, 50, 5, 14, 50),
                 state = c("Alabama", "Alabama", "Alabama", "NY", "NY", "NY"),
                 Year = c(2012:2014, 2012:2014))

我尝试过使用diff函数:

df <- df %>%group_by(state)%>%
      mutate(daily_count = diff(cum_count))
df%分组依据(州)%>%
变异(每日计数=差异(累积计数))
但我明白了

错误:列
daily\u count
的长度必须为3(行数)或1,而不是2

让我知道你的想法


谢谢

diff
返回小于原始长度的
length
值,并且
mutate
要求输出列具有与原始列相同的
长度(或可循环使用的长度1)。我们可以附加值
NA
first
值'cum_count'

library(dplyr)
df %>%
  group_by(state)%>%
  mutate(daily_count = c(first(cum_count), diff(cum_count)))
# A tibble: 6 x 4
# Groups:   state [2]
#  cum_count state    Year daily_count
#      <dbl> <fct>   <int>       <dbl>
#1         5 Alabama  2012           5
#2        14 Alabama  2013           9
#3        50 Alabama  2014          36
#4         5 NY       2012           5
#5        14 NY       2013           9
#6        50 NY       2014          36

谢谢你的解释!
df <- df %>%group_by(state)%>%
      mutate(daily_count = diff(cum_count))
library(dplyr)
df %>%
  group_by(state)%>%
  mutate(daily_count = c(first(cum_count), diff(cum_count)))
# A tibble: 6 x 4
# Groups:   state [2]
#  cum_count state    Year daily_count
#      <dbl> <fct>   <int>       <dbl>
#1         5 Alabama  2012           5
#2        14 Alabama  2013           9
#3        50 Alabama  2014          36
#4         5 NY       2012           5
#5        14 NY       2013           9
#6        50 NY       2014          36
df %>%
    group_by(state)%>%
    mutate(daily_count = replace_na(cum_count - lag(cum_count), first(cum_count)))