[英]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.