亞組考慮由分組變量(這裏id
)的數據集和有序變量(這裏date
)使用`data.table`獲得第一基於可變
(df <- data.frame(
id = rep(1:2,2),
date = 4:1
))
# id date
# 1 1 4
# 2 2 3
# 3 1 2
# 4 2 1
我想知道什麼最簡單的方法是在data.table
做這個dplyr
代碼相當於:
library(dplyr)
df %>%
group_by(id) %>%
filter(min_rank(date)==1)
# Source: local data frame [2 x 2]
# Groups: id
#
# id date
# 1 1 2
# 2 2 1
即每個id
根據date
拿到第一。
基於類似計算器的問題(Create an "index" for each element of a group with data.table),我想出了這個
library(data.table)
dt <- data.table(df)
setkey(dt, id, date)
for(k in unique(dt$id)){
dt[id==k, index := 1:.N]
}
dt[index==1,]
但似乎應該有一個班輪這一點。不熟悉data.table
我以爲像這樣
dt[,,mult="first", by=id]
應該工作,但唉!代碼的最後一點似乎應該按id
,然後採取先(其內id
將由date
來決定,因爲我已經這樣設置的加密密鑰。)
編輯
由於阿難Mahto,這一個班輪現在在我data.table
劇目
dt[,.SD[1], by=id]
# id date
# 1: 1 2
# 2: 2 1
會這樣的工作適合你:'setkey(as.data.table(df),id,date)[,.SD [1],by = id]'? – A5C1D2H2I1M1N2O1R2T1 2014-11-06 10:46:43
@AnandaMahto是的!謝謝。 – 2014-11-06 10:51:42
@DavidArenburg,毫秒正在慢慢地殺死我:-) – A5C1D2H2I1M1N2O1R2T1 2014-11-06 11:11:40