R 计算不同组固定年份的百分比变化
我想计算不同城市变量“var2”相对于2000年的百分比变化 我试过这个:R 计算不同组固定年份的百分比变化,r,dplyr,R,Dplyr,我想计算不同城市变量“var2”相对于2000年的百分比变化 我试过这个: library(dplyr) data <- data.frame(cities= c('NY','NY','NY','NY','NY','PL','PL', 'PL','PL','PL','AS','AS','AS','AS','AS','RY','RY','RY','RY','RY', 'JK', 'JK', 'JK', 'JK', 'JK'), year=c('2000', '2002', '2004', '
library(dplyr)
data <- data.frame(cities= c('NY','NY','NY','NY','NY','PL','PL', 'PL','PL','PL','AS','AS','AS','AS','AS','RY','RY','RY','RY','RY', 'JK', 'JK', 'JK', 'JK', 'JK'), year=c('2000', '2002', '2004', '2006', '2008', '2000', '2002', '2004', '2006', '2008','2000', '2002', '2004', '2006', '2008','2000', '2002', '2004', '2006', '2008','2000', '2002', '2004', '2006', '2008'),
var2 = c(12,26,17,8,14, 12,20,10,8,14,12,20,10,8,14,12,20,10,8,14,12,20,10,3,5))
changes <- data2 %>%
group_by(cities) %>%
arrange(year, .by_group = TRUE) %>%
mutate(variable_change = round((var2/lag(var2) - 1)*100, digits = 1))
库(dplyr)
数据%
安排(年份,.by_group=TRUE)%>%
变异(变量_change=round((var2/lag(var2)-1)*100,位数=1))
但是它计算了每年之间的百分比变化,我试图计算2000年和2002年、2000年和2004年之间的变化等等…你可以使用
匹配得到相应的var2
,其中year=2000
,然后用每个城市的var2
值除以它
library(dplyr)
data %>%
group_by(cities) %>%
mutate(variable_change = var2/var2[match(2000, year)])
# cities year var2 variable_change
# <chr> <chr> <dbl> <dbl>
# 1 NY 2000 12 1
# 2 NY 2002 26 2.17
# 3 NY 2004 17 1.42
# 4 NY 2006 8 0.667
# 5 NY 2008 14 1.17
# 6 PL 2000 12 1
# 7 PL 2002 20 1.67
# 8 PL 2004 10 0.833
# 9 PL 2006 8 0.667
#10 PL 2008 14 1.17
# … with 15 more rows
data %>%
group_by(cities) %>%
mutate(variable_change = var2/var2[year == 2000])
我们可以在%
中使用%,当存在NA
s时,它也会起作用
library(dplyr)
data %>%
group_by(cities) %>%
mutate(variable_change = var2/var2[year %in% 2000])