使用 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/