R 从累积数据中获取反向关联数据?
我有一个数据框,其中有日期数据和累计计数。 我正在尝试做一个与cumsum相反的操作,以获得每日计数,但同时也获得每组计数。 我试图从数据帧A转到数据帧B。 我正在使用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"),
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)))