这是一个例子:
set.seed(123)
data<-data.frame(X=rep(letters[1:3], each=4),Y=sample(1:12,12),Z=sample(1:100, 12))
data[data==3]<-NA
我要意识到的是选择唯一的行X
具有最小Y
通过忽略NA
s:
a 4 68
b 1 4
c 2 64
最好的方法是什么?
使用data.table
包,这很简单:
library(data.table)
d <- data.table(data)
d[, min(Y, na.rm=TRUE), by=X]
您还可以使用plyr
和它的ddply
功能:
library(plyr)
ddply(data, .(X), summarise, min(Y, na.rm=TRUE))
或者使用基数 R:
aggregate(X ~ ., data=data, FUN=min)
根据编辑,我会使用data.table
一定:
d[, .SD[which.min(Y)], by=X]
然而,有一些使用基础 R 或其他包的解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)