如何将数据帧转换为 R 中的数组?
How to convert a dataframe into an array in R?
我有兴趣计算 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 中的数组吗?
非常感谢
此致
最简单的方法是使用这个:
array(unlist(df_median))
如果你想包含 colnames
你可以在 array()
中使用 dimnames =
参数
如果您还想包含 rownames
,则必须在 array()
中同时提供 dimnames =
和 dim =
参数
我有兴趣计算 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 中的数组吗?
非常感谢
此致
最简单的方法是使用这个:
array(unlist(df_median))
如果你想包含 colnames
你可以在 array()
dimnames =
参数
如果您还想包含 rownames
,则必须在 array()
dimnames =
和 dim =
参数