This question already has answers here:
Return date range by group
(3 个回答)
1年前关闭。
我有非常简单的大观察数据,假设结构如下:
我想要做的是通过计算每个唯一 ID(本例中的树种)的年份(
期望的输出:
任何建议将不胜感激。
(3 个回答)
1年前关闭。
我有非常简单的大观察数据,假设结构如下:
> df = data.frame(ID = c("oak", "birch", rep("oak",2), "pine", "birch", "oak", rep("pine",2), "birch", "oak"),
+ yearobs = c(rep(1998,3), rep(1999,2), rep(2000,3),rep(2001,2), 2002))
> df
ID yearobs
1 oak 1998
2 birch 1998
3 oak 1998
4 oak 1999
5 pine 1999
6 birch 2000
7 oak 2000
8 pine 2000
9 pine 2001
10 birch 2001
11 oak 2002
我想要做的是通过计算每个唯一 ID(本例中的树种)的年份(
max(yearobs)-min(yearobs)
)之间的差异来计算年龄。我曾尝试使用 lubridate
+ dplyr
包,但是,我的数据中每个唯一 ID 的观察次数各不相同,我想以最快的方式创建一个年龄列,而无需分别存储最小值和最大值(避免循环在这里,因为我的数据量很大)。期望的输出:
ID age
1 oak 4
2 birch 3
3 pine 3
任何建议将不胜感激。
最佳答案
在基础 R 中,您可以执行以下操作:
aggregate(yearobs ~ ID, data = df, FUN = function(x) max(x) - min(x))
# ID yearobs
# 1 birch 3
# 2 oak 4
# 3 pine 2
关于r - R中观测数据的年龄计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57478412/