我正在尝试计算在一列中匹配的数据框的第一行和 n 行之间的差异/持续时间。我想将该值放在新列“持续时间”中。样本数据:下面。
y <- data.frame(c("USA", "USA", "USA", "France", "France", "Mexico", "Mexico", "Mexico"), c(1992, 1993, 1994, 1989, 1990, 1999, 2000, 2001))
colnames(y) <- c("Country", "Year")
y$Year <- as.integer(y$Year) # this is to match the class of my actual data
我想要的结果是:
1992 USA 0
1993 USA 1
1994 USA 2
1989 France 0
1990 France 1
1999 Mexico 0
2000 Mexico 1
2001 Mexico 2
我尝试过使用dplyr's group_by and mutate
y <- y %>% group_by(Country) %>% mutate(duration = Year - lag(Year))
但是我只能得到实际的滞后年份(例如1999年),或者只计算连续行之间的差异,让我得到一个国家的第一行 NA 或者所有其他行的1同一个国家。 Many q & a's专注于difference between sequential rows,而不是第一行和 n 行之间。
思想?
答案 0 :(得分:0)
这可以通过减去first
&#39;年份来完成。与'年'&#39;按国家&#39;分组后的列。
y %>%
group_by(Country) %>%
mutate(duration = Year - first(Year))