在负面选择数据框后,如何在R中获取摘要统计信息

时间:2016-03-21 20:02:11

标签: r dataframe dplyr

我想否定(除了因子变量的每个级别的给定行值之外的所有值)并总结剩余的数据。举个简单的例子,我有一个带有两列的数据框DF。

~"044j"

如果dplyr可以选择否定(可以吗?),它会看起来像这样。

>DF
Category      Value  
A               5  
B               2  
C               3  
A               1  
C               1

3 个答案:

答案 0 :(得分:5)

以下是您可以在基地R中执行此操作的方式:

编辑:感谢您提出可扩展的更改@Ryan

> sapply(levels(DF$Category), FUN = function(x) mean(subset(DF, Category != x)$Value))

       A        B        C 
2.000000 2.500000 2.666667 

答案 1 :(得分:2)

使用data.table我们可以尝试:

library(data.table)
setDT(DF)[, DF[!Category %in% .BY[[1]], mean(Value)], by = Category]
#   Category       V1
#1:        A 2.000000
#2:        B 2.500000
#3:        C 2.666667

答案 2 :(得分:0)

另一种方法是使用for循环:

DF<-data.frame(Category=c("A","B","C","A","C"),
               Value=c(5,2,3,1,1))

DF2<-data.frame(Category=unique(DF$Category))

for(letter in unique(DF$Category)) {
        DF3<-DF[DF$Category!=letter,]
        DF2$avg[DF2$Category==letter]<-round(mean(DF3$Value),2)
}

DF2

  Category  avg
1        A 2.00
2        B 2.50
3        C 2.67