如何计算R中分组数据帧中行之间的变化?
我有以下数据框:如何计算R中分组数据帧中行之间的变化?,r,dataframe,dplyr,R,Dataframe,Dplyr,我有以下数据框: A tibble: 47,898 x 4 # Groups: countyfips [1,774] countyfips day_month_year new_case_rate_07da case_rate <dbl> <date> <dbl> <dbl> 1 1001 2020-01-12
A tibble: 47,898 x 4
# Groups: countyfips [1,774]
countyfips day_month_year new_case_rate_07da case_rate
<dbl> <date> <dbl> <dbl>
1 1001 2020-01-12 0 0
2 1001 2020-01-19 0 0
3 1001 2020-01-26 0 0
4 1001 2020-02-02 0 0
5 1001 2020-02-09 0 0
6 1001 2020-02-16 0 0
7 1001 2020-02-23 0 0
8 1001 2020-03-01 0 0
9 1001 2020-03-08 0 0
10 1001 2020-03-15 0 0
# … with 47,888 more rows
但所有行的输出都为零(即使10之后的行中的值不是零)
您将如何尝试解决此问题?非常感谢。看一看哪一个计算lag
行之间向量或矩阵x
的滞后差(默认值1)
以以下为例:
d <- data.frame(cases = c(4, 2, 3, 10, 0, 100))
diff(d$cases)
# [1] -2 1 7 -10 100
在您的具体问题中,我认为这应该有效:
Affinity_County_Weekly.csv %>% group_by(countyfips) %>% mutate(change_vs_last_week_case_rate = c(0, diff(case_rate))
您能否以可复制的方式(例如,
dput(Affinity\u country\u Weekly)
)共享数据集的更大部分(因此它不包括零值)?谢谢您的回复。代码起作用了,现在我有了病例率之间的差异。但当我尝试使用以下代码计算百分比变化时:x%groupby(countyfips)%%>%mutate(growth\u case\u rate=c(0,diff(case\u rate)))%%>%mutate(change\u case\u rate=growth\u case\u rate/lag(case\u rate))
R只是计算增长率除以同一行的增长率:case\u率增长率变化率变化率1 10.7 10.7 1 2 21.5 10.8 0.502
根据测试,我不太确定lag
的作用,但是,您可以尝试在列的开头添加一个值,并删除最后一个值,这样可以有效地将每个值向后移动(c(0,case\u rate[-length(case\u rate)]
)。如果除以0,该值应该是什么?
d$newCases <- c(0, diff(d$cases))
# cases newCases
# 1 4 0
# 2 2 -2
# 3 3 1
# 4 10 7
# 5 0 -10
# 6 100 100
Affinity_County_Weekly.csv %>% group_by(countyfips) %>% mutate(change_vs_last_week_case_rate = c(0, diff(case_rate))