gpt4 book ai didi

r - 计算与列值匹配的第一行和 n 行之间的持续时间/差异

转载 作者:行者123 更新时间:2023-12-05 05:22:37 26 4
gpt4 key购买 nike

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

想法?

最佳答案

这可以通过在按“国家/地区”分组后用“年”列减去第一个“年”来完成。

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

关于r - 计算与列值匹配的第一行和 n 行之间的持续时间/差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39933296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com