在R中导入多个相同观察线

时间:2016-02-04 16:07:46

标签: r

我试图导入看起来像这样的数据

ID,time1,time2,time3,time4,time5,time6,time7,time8,time9,time10,
123456,
0.123425,0.543565,0.43543,0.34567,0.76543,12345,43567,43567,324567,324567,
87654,
0.14567,0.543123,0.435987,0.5675,0.58843,.5543,.567,.3567,.24567,.533367,
32156,

我尝试过这样导入:

tmp <- read.csv(file, header = TRUE, sep = ",")

我也试过read.table。 但是,一旦我尝试导入它,ID就会自动观察,其他所有变量都标记为缺失。下一行数据将time1压入ID,time2变为time1,依此类推。

它看起来像:

ID       time1     time2    time3   .....
123456
0.123435 0.543565  0.43543  0.34567
87654
0.14567  0.543123  0.435987 0.5675

我希望我的输出看起来像这样:

ID     time1    time2    time3   ......
123456 0.123425 0.543565 0.43543
87654  0.14567  0.543123 0.435987
32156

1 个答案:

答案 0 :(得分:2)

您可以在R中进行变通方法,假设所有数据的结构类似。对于这个例子,我假设导入的数据集中有偶数行(我已经删除了第五行进行测试)。

#remove empty column
dat <- dat[,1:11]

#create vector of identifiers to split by, each id repeated twice
ID2 <- rep(1:(nrow(dat)/2), each=2)

然后我们通过标识符拆分数据,并提取我们需要的数据。这是第一行的第一个值,第二行的所有值(最后一个空行)。然后我们给向量提供原始数据的列名并返回它。

res <- lapply(split(dat,ID2), function(x){
  res <- c(x[1,1],x[2,-ncol(x)]) #remove final empty column
  names(res) <- colnames(dat)
  res
})

最后,我们将它们绑定在一起

output <- do.call(rbind,res)

> output
  ID     time1    time2    time3    time4   time5   time6  time7 time8  time9   time10  
1 123456 0.123425 0.543565 0.43543  0.34567 0.76543 12345  43567 43567  324567  324567  
2 87654  0.14567  0.543123 0.435987 0.5675  0.58843 0.5543 0.567 0.3567 0.24567 0.533367