使用RCurl
进行网页搜索后,我使用了XML
的{{1}},现在有一个包含40个数据框的列表,其中包含40个两个变量的观察值。我想将其转换为100行和40列的单个数据帧。每个数据框中的第一列包含我想在单个数据框中成为列名的内容。这与我可以获得的MWE一样接近(实际列表中的每个数据帧都被命名为readHTMLTable
):
NULL
以下是我希望实现的一般输出:
description <- c("name", "location", "age")
value <- c("mike", "florida", "25")
df1 <- data.frame(description, value)
description <- c("name", "location", "tenure")
value <- c("jim", "new york", "5")
df2 <- data.frame(description, value)
list <- list(df1, df2)
# list output
[[1]]
description value
1 name mike
2 location florida
3 age 25
[[2]]
description value
1 name jim
2 location new york
3 tenure 5
如上所述,我不知道如何通过MWE表示,我的问题是每个数据帧都被命名为library(reshape2)
listm <- melt(list)
dcast(listm, L1 ~ description)
# dcast output
L1 age location name tenure
1 1 25 florida mike <NA>
2 2 <NA> new york jim 5
,因此没有唯一的标识符{{1}数据。
如何在NULL
和/或cast
处理此问题?
答案 0 :(得分:2)
您可以在列表中每个data.frame的行上使用rep
来获取L1列。然后直接投射:
# ll is your list of data.frames
ll.df <- cbind(L1 = rep(seq_along(ll), sapply(ll, nrow)), do.call(rbind, ll))
require(reshape2)
dcast(ll.df, L1 ~ description)
L1 age location name tenure
1 1 25 florida mike <NA>
2 2 <NA> new york jim 5