2017-06-24 13 views
0

だから私はこれを理解するのに苦労してきました。私はまだRにはまだ新しく、まだここで解決策を見つけていません。大きなデータフレームリストを持つデータフレームの列にアクセスするR

私はこのようになりますdata.frameを持っている:

LandAverageTemperature LandAverageTemperatureUncertainty  date year 
1  3.0340000000000003        3.574 1750-01-01 1750 
2     3.083        3.702 1750-02-01 1750 
3     5.626        3.076 1750-03-01 1750 
4     8.49        2.451 1750-04-01 1750 
5     11.573        2.072 1750-05-01 1750 
6  12.937000000000001        1.724 1750-06-01 1750 

それでは、私がやりたいことはある:毎年のために、私はLandAverageTemperature列の平均値を取得したいです。

は、私はこのような最初の split機能を使ってこれを実行しようとした:私は266個の要素(1750年から2016年までの各年の1)の大規模なリストを残し

df_list <- split(cleanGlobalTemps, f = cleanGlobalTemps$year) 

を。このリストの各dataframeをループして、LandAverageTemperature列の平均値を取得したいとします。

私はこの試みた:

for(i in 1:length(df_list)){ 
    averageYearlyGlobalTemp[i] <- mean(as.double(df_list[[i]][[1]]), na.rm = TRUE) 
} 

をしかし、それは動作しません、それは次のような結果を返しますように

> averageYearlyGlobalTemp 
    [1] 1320.1667 709.6667 973.1667 1319.7500 1120.9167 1300.2500 1368.9167 1365.7500 1133.5833 1335.8333 1056.8333 
[12] 1336.4167 1543.8333 1004.5000 1139.7500 1435.0000 1404.8333 1288.7500 1239.6667 1282.7500 1345.9167 1313.1667 
[23] 1469.5000 1273.2500 1151.7500 1304.0000 

....と。

答えて

0

aggregateあなたがグループ

aggregate(cleanGlobalTemps$LandAverageTemperature, by=list(cleanGlobalTemps$year), FUN=mean) 
+0

これは本当に有望ですね。 1つの問題は、mean関数を介してna.rm = TRUEパラメータを渡す方法です。私の結果はすべてこのメソッドではNAであるからです。 – Coderman

+0

これを関数に追加するだけでいいはずです 'aggregate(cleanGlobalTemps $ LandAverageTemperature、by = list(cleanGlobalTemps $ year)、FUN =平均、na.rm = TRUE)' –

+0

それはちょうどその後に私に起こった私はそれを試しましたが、残念ながらサイコロはありませんでした。 – Coderman

2
df %>% 
    filter(!is.na(LandAverageTemperature)) %>% 
    group_by(year) %>% 
    summarise(output = mean(LandAverageTemperature)) 
+0

は、あなたはそれがデータフレームのリストのために働くだろうか? – Masoud

+0

私はデータフレームのリストではなく、プライマリデータフレームで作業しています。私はデータフレームのリストを作ることは必要ないと思う。 –

+0

*** R ***のデータフレームの大きなリストを持つデータフレームの列にアクセスすると、そのタイトルが読み取られます。 – Masoud

0

(OPに代わって投稿)で統計を計算することができます。

お手数をおかけしていただきありがとうございます。 @氏。約束していたコードの下にバグがありますが、私は正しい答えを得ることができませんでした。だから私は要因を扱っていたので、カラム内の適切な値にアクセスするためにはlevels()関数を使う必要がありました。ここで

は、最終的な作業コードです:

averageYearlyGlobalTemp <- aggregate(as.numeric(levels(cleanGlobalTemps$LandAverageTemperature)[cleanGlobalTemps$LandAverageTemperature]), by=list(cleanGlobalTemps$year), FUN=mean, na.rm = TRUE)

関連する問題