我只有一个简单的问题, 在数据框中为每个人首次出现年龄的最快方法是什么? (实质上,我们需要根据他们第一次参与提取每个人的独特价值)
Person Age Result
soso 22 199
bobo 18 208
soso 23 207
folo 25 197
bobo 19 226
有什么想法吗?
答案 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)),]