我正在导入和合并.tcx个文件(gps和XML格式的健身数据)以供进一步分析:
files <- dir(pattern = "\\.tcx")
ldf <- lapply(files,
function(x) plyr::ldply(
getNodeSet(xmlParse(x), "//ns:Trackpoint", "ns"),
as.data.frame(xmlToList)))
mydf <- plyr::rbind.fill(mydf)
setNames(mydf, c('time', 'lat', 'long', 'alt', 'heartrate'))
这很好用,但我需要添加一个带文件标识的列。这可能是反制的,但我更喜欢在添加的列中添加文件名。如何添加此列?
答案 0 :(得分:3)
难以提供没有可重复示例的解决方案,也不确定所需的输出。一个想法是改变这一行:
as.data.frame(xmlToList)
类似于:
function(y){data.frame(ID=x,as.data.frame(xmlToList(y)))})
这将使用每个data.frame的名称文件为列添加ID和ID。
答案 1 :(得分:1)
我们假设ID是包含ID的向量(这里是您的文件名),您可以这样做:
mydf[,'ID'] <- ID
答案 2 :(得分:0)
不是一个完整的答案,而是一个起点。
对于数据框,您可以通过以下方式添加id列:
data <- data.frame(x=rnorm(100), y=rnorm(100))
data$ID <- "id"
数据框的一列将填充id。
所以,我会尝试在lapply上的函数(x)中添加这样一个列。