假设我有以下数据框
Website <- rep(paste("Website",1:3),2)
Year <- c(rep(2013,3),rep(2014,3))
V1 <- c(10,20,50,20,30,70)
V2 <- c(5,15,30,15,30,45)
df <- data.frame(Website,Year,V1,V2)
df
Website Year V1 V2
1 Website 1 2013 10 5
2 Website 2 2013 20 15
3 Website 3 2013 50 30
4 Website 1 2014 20 15
5 Website 2 2014 30 30
6 Website 3 2014 70 45
我想找到的是每个
website
从 2013
年到 2014
的增长,即两个变量的 (x1 - x0)/x0。这将导致执行以下操作的数据框 Website V1 V2
1 Website 1 1.0 2.0
2 Website 2 0.5 1.0
3 Website 3 0.4 0.5
这只是两个变量
Website
和 V1
的每个 V2
的增长率。
最佳答案
假设你有更多的时间,dplyr
可以很好地处理它。
library(dplyr)
growth <- function(x)x/lag(x)-1
df %>%
group_by(Website) %>%
mutate_each(funs(growth), V1, V2)
# Website Year V1 V2
#1 Website 1 2013 NA NA
#2 Website 2 2013 NA NA
#3 Website 3 2013 NA NA
#4 Website 1 2014 1.0 2.0
#5 Website 2 2014 0.5 1.0
#6 Website 3 2014 0.4 0.5
关于r - 在 R 中寻找数据帧的增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994590/