我目前有多个ID的数据,其格式如下(ID数量约为1600)
id year name status
1 1980 James 3
1 1981 James 3
1 1982 James 3
1 1983 James 4
1 1984 James 4
1 1985 James 1
1 1986 James 1
1 1987 James 1
2 1982 John 2
2 1983 John 2
2 1984 John 1
2 1985 John 1
我希望将这些数据进行子集处理,只保留状态为1以及其之前的状态信息。同时,我想要去除多个1,并且只保留第一个1。最终,我需要得到:
id year name status
1 1984 James 4
1 1985 James 1
2 1983 John 2
2 1984 John 1
我正在研究某年份有多少来自特定状态的人转换为状态1,因此需要进行翻译。我只知道subset命令,但是我认为无法通过执行
subset(data, subset=(status==1))
来获取这些数据。在那之前,我该如何保存信息呢?我想再次补充一下这个问题 - 当我使用第一个回答(使用plr包)和第三个回答(使用duplicated命令)时,我没有得到相同的结果。我发现第一个回答准确地保留了信息,而第三个回答没有。
match(1, x$status)
代替which(x$status == 1)[1]
。 - flodelmatch
! - Mark Heckmann