R中

2016-09-19 38 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]])