如何按R选择具有最小值并包含NAs的组 [英] How to select rows by group with the minimum value and containing NAs in R

查看:116
本文介绍了如何按R选择具有最小值并包含NAs的组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一个例子:

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的独特行 $ c

What I am to realize is to select the unique row of X with minimum Y by ignoring NAs:

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 function:

You can also use plyr and its ddply function:

library(plyr)

ddply(data, .(X), summarise, min(Y, na.rm=TRUE))

或使用base R:

aggregate(X ~ ., data=data, FUN=min)






在编辑时,我会使用 data.table 确定:

d[, .SD[which.min(Y)], by=X]

然而,是使用基本R或其他软件包的解决方案。

However, there are solutions using base R or other packages.

这篇关于如何按R选择具有最小值并包含NAs的组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆