在掘金比赛中首次出现年龄

时间:2017-04-06 06:36:36

标签: r

我只有一个简单的问题, 在数据框中为每个人首次出现年龄的最快方法是什么? (实质上,我们需要根据他们第一次参与提取每个人的独特价值)

Person    Age   Result
soso      22    199
bobo      18    208
soso      23    207
folo      25    197
bobo      19    226

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我们可以使用data.table使用unique by选项

来获取最快的摘录
unique(df2, by = "Person")

或使用行索引

进行提取
setDT(df2)[df2[, .I[1L],Person]$V1]

更新

如果我们需要最低年龄'每人行

setDT(df2)[, .SD[which.min(Age)], Person]

或者如果我们更喜欢dplyr,那么

library(dplyr)
df2 %>% 
   group_by(Person) %>%
   slice(1L)

更新

df2 %>%
    group_by(Person) %>%
    filter(Age == min(Age))

或者不使用任何外部库

df2[with(df2, Age==ave(Age, Person, FUN = min)),]