R聚合函数
当我在包含字符和数字列的R聚合函数,r,aggregate,R,Aggregate,当我在包含字符和数字列的data.frame上使用聚合函数时,聚合失败,只返回所有的NAs。我怎样才能解决这个问题?我的第一个想法是检查值类,但它不起作用 name <- rep(LETTERS[1:5],each=2) feat <- paste0("Feat",name) valuesA <- runif(10)*10 valuesB <- runif(10)*10 daf <- data.frame(ID=name,feature=feat,valueA=v
data.frame
上使用聚合函数时,聚合失败,只返回所有的NAs。我怎样才能解决这个问题?我的第一个想法是检查值类,但它不起作用
name <- rep(LETTERS[1:5],each=2)
feat <- paste0("Feat",name)
valuesA <- runif(10)*10
valuesB <- runif(10)*10
daf <- data.frame(ID=name,feature=feat,valueA=valuesA,valueB=valuesB, stringsAsFactors = FALSE)
aggregate(.~ID, data=daf,FUN=mean)
aggregate(.~ID, data=daf,FUN=function(x){
if(is.character(x)){
return(NA)
}else{ return(mean(x))}
})
nameaggregate(.~ID,data=daf,FUN=mean)
对我来说很好。它返回值,而不是NA
。在您的示例中,功能
是类因素,而在您的实际问题中是字符。解决方案取决于您想对数据做什么。如果您选择mean
作为函数,则无法在feature
上计算它,因此您会得到NAs(如果feature是factor,就像您在这里的示例中一样,在内部被视为整数)。因此,这可能会起作用:aggregate(.~ID,data=daf[-2],FUN=mean)
谢谢,我明白了,问题是为什么valueA和valueB的结果取决于特征是因子还是字符?若特征为类因子,则正确计算值A和值的平均值。如果特征是字符,那么一切都是NA。为什么?aggregate(.~ID,data=daf,FUN=mean)
对我来说很好。它返回值,而不是NA
。在您的示例中,功能
是类因素,而在您的实际问题中是字符。解决方案取决于您想对数据做什么。如果您选择mean
作为函数,则无法在feature
上计算它,因此您会得到NAs(如果feature是factor,就像您在这里的示例中一样,在内部被视为整数)。因此,这可能会起作用:aggregate(.~ID,data=daf[-2],FUN=mean)
谢谢,我明白了,问题是为什么valueA和valueB的结果取决于特征是因子还是字符?若特征为类因子,则正确计算值A和值的平均值。如果特征是字符,那么一切都是NA。为什么?