如何在函数中插入数据框,然后使用 tapply 按组分组
How can I insert a data frame in a function and then group by groups with tapply
我是 R 编程的新手,我创建了一个函数 returns 我从我们插入的列表或向量中获取一些基本统计数据。当我想插入一个数据框时,问题就来了。
我要插入的数据框有 2 列;第一个是指一组(1 或 2),第二个是指以厘米为单位的头骨宽度(数值)。我想分别取两组的平均值,以便稍后我可以比较它们(1 和 2)、众数、中位数、四分位数...(我在函数中拥有的所有内容)。
我想到使用我创建的函数来插入列表或向量,然后对我进行分组,使用 tapply 函数,但它通过控制台给我一个错误,这个:
Error in tapply(archivo, archivo$`Época histórica`, descriptive_statistics) :
arguments must have same length
这里有我做的功能和点击:
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 函数中做些什么来让它为我工作?有人可以帮我吗?我也接受其他想法,我尝试过使用聚合函数和汇总函数等,但它没有给我想要的统计数据,例如 Pearson 系数。
非常感谢你,问候
在函数中传递数据框的列而不是完整的数据框。您尚未共享您的数据,因此很难给出具体答案,但我们假设另一列名为 col1
。在那种情况下你可以做 -
tapply(archivo$col1, archivo$`Época histórica`, descriptive_statistics)
我是 R 编程的新手,我创建了一个函数 returns 我从我们插入的列表或向量中获取一些基本统计数据。当我想插入一个数据框时,问题就来了。
我要插入的数据框有 2 列;第一个是指一组(1 或 2),第二个是指以厘米为单位的头骨宽度(数值)。我想分别取两组的平均值,以便稍后我可以比较它们(1 和 2)、众数、中位数、四分位数...(我在函数中拥有的所有内容)。
我想到使用我创建的函数来插入列表或向量,然后对我进行分组,使用 tapply 函数,但它通过控制台给我一个错误,这个:
Error in tapply(archivo, archivo$`Época histórica`, descriptive_statistics) :
arguments must have same length
这里有我做的功能和点击:
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 函数中做些什么来让它为我工作?有人可以帮我吗?我也接受其他想法,我尝试过使用聚合函数和汇总函数等,但它没有给我想要的统计数据,例如 Pearson 系数。
非常感谢你,问候
在函数中传递数据框的列而不是完整的数据框。您尚未共享您的数据,因此很难给出具体答案,但我们假设另一列名为 col1
。在那种情况下你可以做 -
tapply(archivo$col1, archivo$`Época histórica`, descriptive_statistics)