【问题标题】:How to convert a dataframe into an array in R?如何将数据框转换为R中的数组?
【发布时间】: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


    【解决方案1】:

    最简单的方法是使用这个:

    array(unlist(df_median))
    

    如果要包含colnames,可以在array() 中使用dimnames = 参数

    如果您还想包含rownames,则必须在array() 中同时提供dimnames = dim = 参数

    【讨论】:

    • 是的,事实上我想要相同的输出,带有列名。像这样,对吧? array(unlist(df_median), dimnames = list(colnames(df_median))) 非常感谢! @Wietse de Vries
    • 是的,就是这样
    猜你喜欢
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多