我试图导入看起来像这样的数据
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
答案 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