【发布时间】:2021-07-12 16:37:48
【问题描述】:
您好,我有一个问题,我有一个人在不同公司工作的数据集。现在我想找出他工作的每家公司的持续时间。有些人回到他以前的公司工作。这是我的数据集和我的实现,但是当他稍后回到他以前的公司时它就不起作用了。
library(data.table)
data <- data.table(person = c(1,1,1,1,1,1,1,1), company = c(1,1,1,2,2,2,1,1),
year = c(1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997))
你看到人 == 1 从 1990 年到 1992 年在公司 1 工作,然后从 1993 年到 1995 年转到公司 2。然后他从 1996 年到 1997 年回到公司 1。
我考虑过使用
min <- data[data[, .I[year == min(year)], by=.(person, company)]$V1]
setnames(min, "year", "start")
max <- data[data[, .I[year == max(year)], by=.(person, company)]$V1]
setnames(max, "year", "end")
duration <- merge(min, max, all = T)
你得到的:
person company start end
1 1 1990 1997
1 2 1993 1995
但我想要的是:
person company start end
1 1 1990 1992
1 2 1993 1995
1 1 1996 1997
知道如何获得吗?
谢谢。
【问题讨论】:
标签: r data.table