在R中,如何使用;“聚合”;或;由「;当并非所有因素的组合都存在时?

在R中,如何使用;“聚合”;或;由「;当并非所有因素的组合都存在时?,r,aggregate,R,Aggregate,下面是一个小示例来说明我的数据: > df <- data.frame(subgroup=rep(paste("s",1:3, sep=""), times=3), feature=c(rep("a",6), rep("b",3)), var=rep(1:3, each=3), data=c(rnorm(3,1), rnorm(3,2), rnorm(3,0))) >

下面是一个小示例来说明我的数据:

> df <- data.frame(subgroup=rep(paste("s",1:3, sep=""), times=3),
                   feature=c(rep("a",6), rep("b",3)),
                   var=rep(1:3, each=3),
                   data=c(rnorm(3,1), rnorm(3,2), rnorm(3,0)))
> df
  subgroup feature var        data
1       s1       a   1  1.53152620
2       s2       a   1  1.25476445
3       s3       a   1  1.04221040
4       s1       a   2  1.68913400
5       s2       a   2  1.48290273
6       s3       a   2  1.62871854
7       s1       b   3  0.05278296
8       s2       b   3 -0.66623654
9       s3       b   3 -1.40006454

我尝试使用“聚合”或“按”,但无法使它们满足我的需要。有什么想法吗?提前感谢。

一种方法是使用
plyr
的函数
ddply
对功能和变量进行分组。您可以使用
summary
函数创建一个新的
data.frame
,其中包含一个与您开发的规则相对应的列

library(plyr)
ddply(df, c("feature", "var"), summarize, res = ifelse(sum(data) > 3,TRUE, FALSE))
结果:

  feature var   res
1       a   1  TRUE
2       a   2  TRUE
3       b   3 FALSE
另一种选择是使用
data.table
,它应该提供一些性能优势:

library(data.table)
dt <- data.table(df)

dt[, ifelse(sum(data) > 3, TRUE, FALSE), by = c("feature", "var")]

     feature var    V1
[1,]       a   1  TRUE
[2,]       a   2  TRUE
[3,]       b   3 FALSE
库(data.table)
dt 3,真,假),由=c(“特征”,“变量”)]
特征变量V1
[1,]1是真的
[2,]a 2正确
[3,]b3假

@brandon-我会尽力的,我的道歉:)
library(data.table)
dt <- data.table(df)

dt[, ifelse(sum(data) > 3, TRUE, FALSE), by = c("feature", "var")]

     feature var    V1
[1,]       a   1  TRUE
[2,]       a   2  TRUE
[3,]       b   3 FALSE