合并数据集时添加数据集的ID

时间:2013-04-24 07:53:55

标签: r

我正在导入和合并.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'))

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

3 个答案:

答案 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)中添加这样一个列。