R中

2016-09-19 59 views
0

轉換一個奇怪的名單到數據幀我使用此代碼報廢表從網頁,R中

library(XML) 

url2 <- "http://www.baseball-reference.com/leagues/MLB/" 

data2 <- readHTMLTable(url2, stringAsFactor = FALSE) 

它給了我一個列表,它看起來像這樣,

$teams_team_wins3000 
    Year G ARI ATL BLA BAL BOS CHC CHW CIN CLE COL DET HOU KCR ANA LAD FLA 
1 2016 149 62 57  81 84 94 72 62 86 71 78 78 75 64 84 73 
2 2015 162 79 67  81 78 97 76 64 81 68 74 86 95 85 92 71 
3 2014 162 64 79  96 71 73 73 76 85 66 90 70 89 98 94 77 
4 2013 163 81 96  85 97 66 63 90 92 74 93 51 86 78 92 62 
5 2012 162 81 94  93 69 61 85 97 68 64 88 55 72 89 86 69 
6 2011 162 94 89  69 90 71 79 79 80 73 95 56 71 86 82 72 
7 2010 162 65 91  66 89 75 88 91 69 83 81 76 67 80 80 80 
8 2009 163 70 86  64 95 83 79 78 65 92 86 74 65 97 95 87 
9 2008 163 82 72  68 95 97 89 74 81 74 74 86 75 100 84 84 

如果你願意,你可以簡單地將代碼複製到頂部以獲取同一個表。問題是R讀取這個像列表一樣,我想它是一個數據框。

通常情況下,我會使用此代碼將其轉換爲數據幀,但此時不起作用。

do.call(rbind, data2) %>% as.data.frame 

我還是相當新的R,和我想要做的就是這個列表轉換成數據幀,這樣我可以再結構中的數據是這個樣子,

Year Team Wins Games 
2016 ARI 62 149 
2016 ATL 57 149 

所有幫助表示讚賞。

+0

所以你說的列表中有一個條目或多個條目? –

+0

您能否請求顯示一個小的可重複示例的輸入 – akrun

+2

也許我沒有得到正確的問題,但這個列表中的單個元素只是一個數據框。 'class(data2 $ teams_team_wins3000); (data2 $ teams_team_wins3000)' 所以你可以簡單的使用它'head(data2 [[1]])' –

回答

1

幾個問題。拼寫:這是stringsAsFactors。有那裏的一個數據幀,但是因爲函數準備接受多個表,它在那裏作爲一個列表項。你可以把它找回來與「[[」就像你對任何列表:

str(data2[[1]]) 
'data.frame': 120 obs. of 33 variables: 
$ Year: Factor w/ 117 levels "1901","1902",..: 116 115 114 113 112 111 110 109 108 107 ... 
$ G : Factor w/ 15 levels "111","117","129",..: 6 12 12 13 12 12 12 13 13 13 ... 
$ ARI : Factor w/ 19 levels "","100","51",..: 4 10 5 11 11 17 6 7 12 15 ... 
$ ATL : Factor w/ 55 levels "101","103","104",..: 16 26 37 53 51 46 48 44 31 42 ... 
$ BLA : Factor w/ 4 levels "","50","68","BLA": 1 1 1 1 1 1 1 1 1 1 ... 
$ BAL : Factor w/ 53 levels "100","101","102",..: 37 37 50 40 47 26 23 21 25 26 ... 
$ BOS : Factor w/ 51 levels "101","104","105",..: 35 29 22 48 21 41 40 46 46 47 ... 
$ CHC : Factor w/ 47 levels "100","104","107",..: 42 44 21 14 10 19 23 31 44 33 ... 
$ CHW : Factor w/ 46 levels "100","49","51",..: 20 24 21 11 32 27 35 27 36 20 ... 
$ CIN : Factor w/ 45 levels "100","102","108",..: 10 11 22 36 42 25 37 24 20 18 ... 
$ CLE : Factor w/ 44 levels "100","111","51",..: 31 26 30 37 13 25 14 10 26 40 ... 
snipped rest of the 33 columns 

嘗試:

data2 <- readHTMLTable(url2, stringsAsFactors = FALSE) 
str(data2[[1]])