我對計算 data.frame 的中位數感興趣。我找到了兩種方法來做到這一點:1) withtapply和 2) with 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 中的陣列嗎?
首先十分感謝
問候
uj5u.com熱心網友回復:
最簡單的方法是使用這個:
array(unlist(df_median))
如果你想包括colnames你可以使用dimnames = 引數array()
如果您還想包含 ,則rownames必須同時提供 thedimnames = 和dim = 引數array()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349866.html
