在data.frame中按组识别案例

在data.frame中按组识别案例,r,dataframe,R,Dataframe,我想通过比平均值加上标准差更大的群体来确定案例。例如,在iris数据中使用种类作为组,使用petal.wid作为我的变量 最好的方法是什么?创建一个函数 我做了这件事,但我无法与鉴定案件的原始数据建立联系 data(iris) library(plyr) petal.wid.avg <- ddply(iris, .(Species), function(df) return(c(petal.wid.avg=mean(df$Petal.Width), petal.wid.sd=sd(df

我想通过比平均值加上标准差更大的群体来确定案例。例如,在iris数据中使用种类作为组,使用petal.wid作为我的变量

最好的方法是什么?创建一个函数

我做了这件事,但我无法与鉴定案件的原始数据建立联系

data(iris)
library(plyr)
petal.wid.avg <- ddply(iris, .(Species), function(df)
  return(c(petal.wid.avg=mean(df$Petal.Width), petal.wid.sd=sd(df$Petal.Width)))
)
petal.wid.avg$avgsd <- petal.wid.avg$petal.wid.avg + petal.wid.avg$petal.wid.sd
petal.wid.avg
数据(iris)
图书馆(plyr)

petal.wid.avg有很多方法可以做到这一点,但是
ave
函数可能是最简单的

iris$big <- with(iris, 
  ave(Petal.Width, Species, FUN = function(x) x > mean(x) + sd(x))
)

根据这些评论,下面是解决方案的其余部分

iris <- subset(iris, big)
iris <- ddply(
  iris,
  .(Species),
  transform,
  smallest = Petal.Width == min(Petal.Width)
)
(iris <- subset(iris, smallest))

iris有很多方法,但是
ave
功能可能是最简单的

iris$big <- with(iris, 
  ave(Petal.Width, Species, FUN = function(x) x > mean(x) + sd(x))
)

根据这些评论,下面是解决方案的其余部分

iris <- subset(iris, big)
iris <- ddply(
  iris,
  .(Species),
  transform,
  smallest = Petal.Width == min(Petal.Width)
)
(iris <- subset(iris, smallest))

iris您的示例不可复制。我改了。现在是了。我还不清楚你到底想要什么。你能提供一些你希望得到的例子吗?你的例子是不可复制的。我改了。现在是了。我还不清楚你到底想要什么。你能提供一些你希望得到的示例输出吗?我的解释是你复制了问题中的代码。现在的问题是确定每种物种的单一元素,它只大于一个临界点(即大于平均值+sd)。谢谢你们的帮助,但这正是我想弄明白的。只是更大的值。我的解释是你复制了问题中的代码。现在的问题是确定每种物种的单一元素,它只大于一个临界点(即大于平均值+sd)。谢谢你们的帮助,但这正是我想弄明白的。只是更大的值。