0

これが私のデータの最初の 4 行です。

  X...Country.Name Country.Code                               Indicator.Name
1           Turkey          TUR           Inflation, GDP deflator (annual %)
2           Turkey          TUR Unemployment, total (% of total labor force)
3      Afghanistan          AFG           Inflation, GDP deflator (annual %)
4      Afghanistan          AFG Unemployment, total (% of total labor force)
     Indicator.Code     X2010
1 NY.GDP.DEFL.KD.ZG  5.675740
2    SL.UEM.TOTL.ZS 11.900000
3 NY.GDP.DEFL.KD.ZG  9.437322
4    SL.UEM.TOTL.ZS        NA

データを 2 つの列 (各インジケーター コードに 1 つずつ) に再形成し、各行を次のような国に対応させたいと考えています。

Country Name NY.GDP.DEFL.KD.ZG SL.UEM.TOTL.ZS
Turkey       5.6         11.9
Afghanistan  9.43        NA

エクセルでもできると思いますが、困ったときにエクセルに頼らなくてもいいように、R流に学びたいです。必要な場合は、ここにデータの出力があります。

編集:実際には、各指標に 1 つ、国名に 1 つの 3 つの列が必要です。

4

1 に答える 1

4

ベース R にこだわって、 を使用しますreshape。列名を自由にクリーンアップしました。ここでは、出力の数行のみを示しています。削除headして完全な出力を表示します。これは、あなたのdata.frame名前が「mydata」であることを前提としています。

names(mydata) <- c("CountryName", "CountryCode", 
                   "IndicatorName", "IndicatorCode", "X2010")
head(reshape(mydata[-c(2:3)], 
             direction = "wide", 
             idvar = "CountryName", 
             timevar = "IndicatorCode"))
#       CountryName X2010.NY.GDP.DEFL.KD.ZG X2010.SL.UEM.TOTL.ZS
# 1          Turkey                5.675740                 11.9
# 3     Afghanistan                9.437322                   NA
# 5         Albania                3.459343                   NA
# 7         Algeria               16.245617                 11.4
# 9  American Samoa                      NA                   NA
# 11        Andorra                      NA                   NA

ベース R の別のオプションは ですがxtabs、次のようNAに置き換えられ0ます。

head(xtabs(X2010 ~ CountryName + IndicatorCode, mydata))
#                 IndicatorCode
# CountryName      NY.GDP.DEFL.KD.ZG SL.UEM.TOTL.ZS
#   Afghanistan             9.437322            0.0
#   Albania                 3.459343            0.0
#   Algeria                16.245617           11.4
#   American Samoa          0.000000            0.0
#   Andorra                 0.000000            0.0
#   Angola                 22.393924            0.0

の結果はxtabsであるmatrixため、 が必要な場合はdata.frame、出力を でラップしますas.data.frame.matrix

于 2013-01-28T12:40:38.857 に答える