私は奇妙なサブセット化の問題に遭遇しました。問題は、一方の列をサブセット化できるが、もう一方の列をサブセット化できないことです。両方の列は、readHTMLTableによって同じ方法で解析されたようです。
複製するコード
require(XML)
theurl <- "http://en.wikipedia.org/wiki/List_of_stock_exchanges"
html <- htmlParse(theurl)
seData <- readHTMLTable(html)[[2]]
names(seData) = c("Rank","EX","Economy","HQ","MarketCap","TradeValue")
seData = transform(seData,MarketCap = as.numeric(gsub(",","",MarketCap)))
seData = transform(seData,TradeValue = as.numeric(gsub(",","",TradeValue)))
インド証券取引所のサブセットにしたいので、以下を使用しました。
> subset(seData,seData$Economy == "India")
[1] Rank EX Economy HQ MarketCap TradeValue
<0 rows> (or 0-length row.names)
> subset(seData,seData$Economy == " India")
[1] Rank EX Economy HQ MarketCap TradeValue
<0 rows> (or 0-length row.names)
条件を満たす必要のある行が2つあることを検証したにもかかわらず、行が返されませんが、他の列「EX」に対して同じことを簡単に行うことができます。
> subset(seData,seData$EX == "JSE Limited")
Rank EX Economy HQ MarketCap TradeValue
17 17 JSE Limited SouthAfrica Johannesburg 903 287
他の関数を実行しましたが、2つの列はまったく同じように見えます。
> sapply(seData,class)
Rank EX Economy HQ MarketCap TradeValue
"factor" "factor" "factor" "factor" "numeric" "numeric"
> levels(seData$Economy)
[1] " Australia" " Brazil" " Canada"
[4] " China" " Germany" " Hong Kong"
[7] " India" " Japan" " Russia"
...
> levels(seData$EX)
[1] "Australian Securities Exchange" "BME Spanish Exchanges"
[3] "BM&F Bovespa" "Bombay Stock Exchange"
[5] "Deutsche Börse" "Hong Kong Stock Exchange"
[7] "JSE Limited" "Korea Exchange"
...
私は何を取りこぼしたか?使用したサブセット化コマンドの何が問題になっていますか?:(
subset(seData,seData$Economy == " India")