我是R编程的新手,我制作了一个函数,从我们插入的列表或向量中返回一些基本统计信息。当我想插入一个数据帧时,问题就来了。
我要插入的数据帧有2列;第一个是指一组(1或2(,第二个是指头骨的宽度,单位为厘米(数值(。我想分别取两组的平均值,这样以后我就可以比较它们(1和2(、模式、中位数、四分位数。。。(函数中的所有内容(。
我突然想到使用我制作的函数来插入列表或向量,然后对我进行分组,使用tapply函数,但它在控制台上给了我一个错误,这个错误是:
Error in tapply(archivo, archivo$`Época histórica`, descriptive_statistics) :
arguments must have same length
这里有我做的功能和tapply:
descriptive_statistics = function(x){
result <- list(
mean(x), exp(mean(log(x))), median(x), modes(x),
(range(x)[2] - range(x)[1]), var(x), sqrt(var(x)), sqrt(var(x)) / mean(x)
)
names(result) <- c('Aritmetic mean', 'Geometric mean', 'Median', 'Mode', 'Range', 'Variance', 'Standard deviation', 'Pearsons coefficient of variation')
result
}
tapply(archivo, archivo$`Época histórica`, descriptive_statistics)
我可以改进我的功能,使其可以输入数据帧吗?或者我可以在tapply函数中做些什么来让它为我工作?有人能帮我一下吗?我也接受其他想法,我尝试过聚合和内部汇总函数等,但它没有给我我想要的统计数据,比如皮尔逊系数。
提前非常感谢,问候
传递函数中的数据帧列,而不是完整的数据帧。您还没有共享数据,所以很难给出具体的答案,但假设另一列称为col1
。在这种情况下,你可以做-
tapply(archivo$col1, archivo$`Época histórica`, descriptive_statistics)