2016-08-18 208 views
-3

如何得到每列的平均值,每列包含多個值,並且有1000列。爲了效率的原因,我不想使用循環。 我曾嘗試colmeans,rowmeans。R中每列的平均值

數據格式=包含所有行每個山坳是一個數據框,所有這些dataframes被保存在一個列表

For example data look like 
list_of_df=   
    col1      col2   .........coln 
v1 c(10,11,12....)  c(12,11,9....)    c(12,11,9....) 
v2 c(1,1,1,1,1,1...) c(1,1,1,1,1,1...)   c(1,1,1,1,1,1...) 
v3 c(0 ,0,1,2,3,..) c(0 ,0,2,2,2,3,..)   c(0 ,0,2,2,2,3,..) 
v4 c(date1,dat2,....) c(date1,dat2,....)   c(date1,dat2,....) 

我想計算V1行的平均每列。

謝謝

+2

該數據的結構不是矩陣。請使用'dput'輸出數據並將輸出複製到您的問題中。 – lmo

+1

這似乎是一種非常奇怪的存儲數據的方式。看起來你會對三維數組更好。 – Danny

回答

1

我得到了解決,我的問題的解決方案是

meanValue=sapply(list_of_df[1,1:ncol(list_of_df)], function(x) mean(x)) 
+0

你應該不需要'function(x)mean(x)'......'mean'應該足夠了 –

+0

是的,你是對的,謝謝你的信息。我還需要再問一件事,如果你有時間可以指導我如何繼續在這篇文章http://stackoverflow.com/questions/38971669/when-the-column -in-A-數據幀的變化最值並節省-所有最行之間叔?noredirect = 1#comment65298320_38971669 –

0

嘗試colMeans(YourDataStructure [1,])。

0

如果沒有數據結構的dput工作,很難給出方法。但是,根據您的描述,您可以嘗試:

MeanResults <- 
    lapply(list_of_df, 
     function(dat) { 
     mean(dat["V1",]) 
     }) 

您可以unlist這個,如果你需要它作爲一個載體。

你應該考慮,如果你可以讓你在操作一個更好的結構數據,你的時間和精力救自己,從長遠來看:)

+0

這個解決方案並沒有工作,是的,我會嘗試改變結構,我基本上是新的R,我得到這個數據,結果,從這個問題,可能你會更好地瞭解我在做什麼。我有一個循環的解決方案,但我不想使用它http://stackoverflow.com/questions/38971669/when-the-column-in-a-dataframe-changes-the-value-and-save-all-the -rows-between-t?noredirect = 1#comment65298320_38971669 –

+0

我得到了問題的答案,我需要向量,所以我應用了與變化的寶寶。平均值= sapply(list_of_df [1,1:ncol(list_of_df)],function(x)mean(x)) –