我有一个名为“ yield”的数据集:
yield <- data.frame(fruits = c("apples", "apples", "apples", "oranges", "oranges",
"oranges", "pears", "pears", "pears"), year = rep(2008:2010, 3),
count = c(10, 13, 7, 5, 12, 14, 16, 18, 20))
我想确定哪种水果在2008年至2010年之间变化最大。我最近得到的是:
diff(yield$count)/yield[-nrow(yield),] * 100
但不仅会影响我的
fruits
和year
列,结果也不正确。 最佳答案
根据您的公式,我认为此dplyr
解决方案有效。您需要按水果分组,然后按年份排序,以使lag
正常工作:
library(dplyr)
yield %>%
group_by(fruits) %>%
arrange(fruits, year) %>%
mutate(rate = 100 * (count - lag(count))/lag(count)) %>%
ungroup()
# A tibble: 9 x 4
fruits year count rate
<fct> <int> <dbl> <dbl>
1 apples 2008 10.0 NA
2 apples 2009 13.0 30.0
3 apples 2010 7.00 - 46.2
4 oranges 2008 5.00 NA
5 oranges 2009 12.0 140
6 oranges 2010 14.0 16.7
7 pears 2008 16.0 NA
8 pears 2009 18.0 12.5
9 pears 2010 20.0 11.1