【发布时间】:2021-12-19 11:15:15
【问题描述】:
我有兴趣计算 data.frame 的中位数。我找到了两种方法:1)tapply 和 2)aggregate。
出于多种原因,我对“aggregate 方法”更感兴趣。但是,因为它给了我一个 data.frame 并且我需要一个数组,所以我需要对其进行转换。我发现有一个函数尝试执行此操作 (simply2array),但它并没有给我一个确切的数组。
这是我的例子:
当我尝试用 tapply 计算中位数时,它给了我一个数组
df_median2 <- tapply(mtcars$mpg, mtcars$gear, median)
> class(df_median2)
[1] "array"
但是,我需要使用aggregate,它给了我一个数据框。在下面的代码中,我尝试尽可能多地更改它以将其转换为数组(没有成功)
df_median <- aggregate(mtcars$mpg ~ mtcars$gear, FUN=median)
df_median <- as.data.frame(t(df_median))
names(df_median) <- df_median[1,]
df_median <- df_median[-1,]
rownames(df_median) <- "mpg"
my_array <- simplify2array(df_median)
> class(my_array)
[1] "numeric"
所以...我的问题是,您知道是否可以将 data.frame 转换为 R 中的数组?
提前非常感谢
问候
【问题讨论】:
标签: r arrays dataframe median tapply