2017-08-01 7 views
0

私は他の誰かのコードを使って作業しています。私が実行しているコードのこの部分は空のdata.tableを返すようですが、これは理想的ではありません。以下のコードを実行することができます。サブセット化された空のデータテーブルを返す

url = "http://www.cpc.ncep.noaa.gov/products/analysis_monitoring/ensostuff/ensoyears.shtml" 
page <- readLines(url) 
ONI_data_raw <- data.table (readHTMLTable(page, which=8)) 
headers <- c ("Year", 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) 
setnames(ONI_data_raw, headers) 
ONI_data_raw = melt(ONI_data_raw, id.vars = "Year") 
names(ONI_data_raw)[2] = "Month" 
names(ONI_data_raw)[3] = "ONI_Value" 
ONI_data_raw$Month = as.numeric(ONI_data_raw$Month) 
ONI_data_raw$ONI_Value= as.numeric(ONI_data_raw$ONI_Value) 
ONI_data_raw = subset(ONI_data_raw, ONI_data_raw$Year %in% time) 
head(ONI_data_raw) 

私が得る結果は次のとおりです。理想的には私が見たいものを

Empty data.table (0 rows) of 3 cols: Year,Month,ONI_Value 

、このようなものです:私は、これは、コードのゴールだったと仮定し

Year   Jan   Feb   March etc. 
1950   -1.4   -1.2   -1.1 
1951   -0.8   -0.6   -0.2 

が、 3行目から最後の行(サブセットになる前)を実行すると、出力は一種のファンキーになります

Year Month ONI_Value 
1: 1950  1  -1.4 
2: 1951  1  -0.8 
3: 1952  1  0.5 
4: 1953  1  0.5 
5: 1954  1  0.7 
6: 1955  1  -0.6 
7: 1956  1  -0.9 
8: 1957  1  -0.3 
9: 1958  1  1.7 
10: 1959  1  0.6 
11: Year  1  NA 
12: 1960  1  -0.1 

ここで、行11は奇数です。いくつかの行が同様にそれを行います。それが問題を引き起こしているかどうかは分かりませんが、最後の2行目から最後の行が実行されると、データテーブルが空になります。

洞察力は役立ちます。

答えて

1

この行の「時間」は何ですか?私は、時間= cで(1950,1951)を想定した場合

ONI_data_raw = subset(ONI_data_raw, ONI_data_raw$Year %in% time) 

は、あなたが言う問題は、おそらくこのサブセットのラインによって引き起こされるtydirパッケージ

spread(ONI_data_raw, Month, ONI_Value) 

から広がり関数を使用する必要があります。

関連する問題