我的数据符合uniue id并按访问日期排序。有些人有多次访问。数据采用长格式按访问排序。我只想复制每个人最后一次访问的一行。如何只复制数据框中的特定行?
id visit glucose
1 12 Jan 2015 12
1 3 Feb 2015 8
2 1 Feb 2015 13
3 12 Jan 2015 7
3 4 Feb 2015 13
3 1 March 2015 8
答案 0 :(得分:1)
如果我们需要根据每个'id'的'访问'复制最后一行,我们可以使用data.table
。将'data.frame'转换为'data.table'(setDT(df1)
),将order
转换为'id',将'visit'转换为'id',我们复制最后一行({{ 1}})
.N
如果我们只想要每个'id'的最后一行
library(data.table)
setDT(df1)[order(id, as.Date(visit, "%d %b %Y")), .SD[c(seq_len(.N), .N)], by = id]
# id visit glucose
#1: 1 12 Jan 2015 12
#2: 1 3 Feb 2015 8
#3: 1 3 Feb 2015 8
#4: 2 1 Feb 2015 13
#5: 2 1 Feb 2015 13
#6: 3 12 Jan 2015 7
#7: 3 4 Feb 2015 13
#8: 3 1 March 2015 8
#9: 3 1 March 2015 8