计算与列值

时间:2016-10-08 14:01:34

标签: r dplyr duration

我正在尝试计算在一列中匹配的数据框的第一行和 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 行之间。

思想?

1 个答案:

答案 0 :(得分:0)

这可以通过减去first&#39;年份来完成。与'年'&#39;按国家&#39;分组后的列。

y %>%
   group_by(Country) %>%
   mutate(duration = Year - first(Year))