r - 如何使用表格列表

标签 r xml list web-scraping

使用 XML 包,我能够从网站上抓取 80 多个表,而且这个数字还会随着时间的推移而增长。 table 本身并不是很大,大多为 6x10(这个大小因 table 而异,并且随着时间的推移而变化)。可弥补的事实是,99% 的情况下,表都具有相同的列,即列名。例如:

 table[1]
 A B C D E F
 1 b b 2 2 b
 2 b b 2 2 b 


 table[2]
 A B C D E F
 1 c c 2 2 c
 2 c c 2 2 c 

我如何将所有表及其观察结果组合成单独的变量(每列=变量),同时确保每个变量中的观察结果保持与原始表的链接(例如通过附加变量)。

由于不同的表格指的是比赛中不同轮次的结果,因此我希望实现的最终结果是能够跟踪个人在比赛中的进展情况,以及在任何一年中的不同比赛中的情况(我预计会刮掉很多 table )。

任何人都可以传递的任何好的R代码都很棒,并且利用和/或分析大量信息的最佳实践想法将是无价的。

最佳答案

在发布之前我还没有看到@flodel 解决方案,但使用基础包的想法是相同的。

dat1 <- read.table(text = '
A B C D E F
1 b b 2 2 b
2 b b 2 2 b',header=T)

dat2 <- read.table(text ='
A B C D E F
1 c c 2 2 c
2 c c 2 2 c',header=T)

想法是将所有 data.frames 放入一个列表中,并处理它们。

ll <- list(dat1,dat2)   ## I assume your table in a list 
ll <- lapply(seq_along(ll),function(i)cbind(ll[[i]],id = i))
do.call(rbind,ll)

  A B C D E F id
1 1 b b 2 2 b  1
2 2 b b 2 2 b  1
3 1 c c 2 2 c  2
4 2 c c 2 2 c  2

我认为你不需要把所有的都放在一个大的data.frame中,你可以在列表中处理它们。 例如:

ll <- lapply(ll,function(dat){
  sum(rank(dat))  ## dummy rank function 
})

您将获得每轮的得分列表

 ll
[[1]]
[1] 105

[[2]]
[1] 105

关于r - 如何使用表格列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14119503/

相关文章:

R bizdays 无法正常工作

java - Android 上的简单 XML - 类 MyArrayList<E> 扩展了 ArrayList<E>?

python - [[...]] 在 python 中是什么意思?

R) 如何删除空值的 "rows"?

r - 聚合嵌套列表对象中不同列表的相似列

Android Horizo​​ntalScrollView 宽度

java - 在 XML Validator 上设置 ErrorHandler 会导致不正确的验证

python - 如何将列表值添加到python中的现有字典

python - 使用 {} 从列表创建集合

r - 在 R 中创建重复向量的替代方法