0

我正在导入和合并.tcx文件(XML 格式的 GPS 和健身数据)以进行进一步分析:

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'))

这很好用,但我需要添加一个带有文件标识的列。这可以是计数器,但我更喜欢在添加的列中添加文件名。如何添加此列?

4

3 回答 3

3

如果没有可重复的示例,很难给出解决方案,也不确定所需的输出。一个想法是改变这一行:

    as.data.frame(xmlToList)

类似于:

    function(y){data.frame(ID=x,as.data.frame(xmlToList(y)))})

这将使用每个 data.frame 的名称文件将 ID 添加到列。

于 2013-04-24T08:09:13.800 回答
1

假设 ID 是包含 ID 的向量(这里是您的文件名),您可以这样做:

  mydf[,'ID'] <- ID
于 2013-04-24T08:02:31.747 回答
0

不是一个完整的答案,而是一个起点。

对于数据框,您可以通过以下方式添加 id 列:

data <- data.frame(x=rnorm(100), y=rnorm(100))

data$ID <- "id"

数据框的一列将填充 id。

所以,我会尝试在 lapply 的函数(x)中添加这样的列。

于 2013-04-24T08:01:06.137 回答