簡體   English   中英

R:根據特定列的平均值更改列表中幾個數據框的順序

[英]R: Change order of several dataframes in a list depending on mean of a specific column

有幾個包含多個數據框的列表。 所有數據框具有相同的兩個列名,但長度不同。

一個簡單的例子是:

d1 <- data.frame(y1 = c(1:5), y2 = 3)
d2 <- data.frame(y1 = c(6:13), y2 = 1)
d3 <- data.frame(y1 = c(13:21), y2 = 2)
df_list <- list(d3, d1, d2)

現在,我正在尋找一種解決方案,以計算列表中每個數據幀中y1列的均值,然后更改數據幀的順序,即從具有最低y1列均值的數據幀開始。

到目前為止,我能夠使用以下方法計算均值:

lapply(df_list, function(x) mean(x[,1]))

但我不知道如何將其與order()結合使用

df_list <- df_list[order(lapply(df_list, function(x) mean(x[,1])))]

給我

“順序錯誤(lapply(df_list,function(x)均值(x [,1]))):
“ orderVector1”中未實現的類型“列表”

謝謝你的幫助!

您可以使用下面的代碼來完成此操作,但這不會更改列表順序,因為三個數據幀已經按照您指定的順序進行了排序:

df_list=df_list[order(sapply(df_list,function(x) mean(x$y1)))]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM