我正在处理自动excel导出,其中包含有关在实际数据之前导出的数据的信息,以便它可以读取(在Excel中易于复制粘贴,尽管我主要使用的是csv衍生物)
> Site ID: Site ID uninitialized
> Serial Number: ####
> TMI Serial Number: ####-#-#####
> SW Version: Comm. 003.003.001 2015-05-27 15:51:17 buildmgr
>OrganType: [some text]
>OrganID: [random string]
> Session Date: 2015-10-21 Session Time: 08:45:18
> Date Time Var1 Var2 Var3 Var4 Var5
> Time L/min L/min L/min mmHg
> 10/21/2015 8:47:26 --- --- --- --- 0
> 10/21/2015 8:49:26 --- --- --- --- 0
> 10/21/2015 9:33:26 --- --- --- --- 0
> 10/21/2015 9:35:26 --- --- --- --- 0
> 10/21/2015 9:37:26 --- --- --- --- 0
> 10/21/2015 9:39:26 --- 1.46 0.97 1.53 13
虚线表示缺少数据。我不能为我的生活弄清楚如何让R了解正在发生的事情。理想情况下,我希望将标题数据集成到数据表中作为变量,以便以后可以合并多个这些文件以用于主列表。我是否需要在excel中手动修改它,或者我可以使用一些R语法?
答案 0 :(得分:0)
如果使用包XLConnect读取Excel文件,则可以指定开始和结束的行以读取工作表。然后,您可以将第一个data.frame作为标题,将第二个数据设为" real" data.frame。之后,您将在data.frame中创建新列,以合并您从标题中获得的数据。
如果布局发生变化,您可能需要采用不同的方法。我希望这有帮助。
答案 1 :(得分:0)
一个想法是使用正则表达式来解析标头,如果标头是一致的。假设您的数据位于名为this.addSeries({
name: title,
colorByPoint: true,
data: pieSeries,
type: 'pie'
}, true)
的文件中:
testdata.csv
如何解析标题的示例:
writeLines(text="Site ID: Site ID uninitialized
Serial Number: ####
TMI Serial Number: ####-#-#####
SW Version: Comm. 003.003.001 2015-05-27 15:51:17 buildmgr
OrganType: [some text]
OrganID: [random string]
Session Date: 2015-10-21 Session Time: 08:45:18
Date Time Var1 Var2 Var3 Var4 Var5
Time L/min L/min L/min mmHg
10/21/2015 8:47:26 --- --- --- --- 0
10/21/2015 8:49:26 --- --- --- --- 0
10/21/2015 9:33:26 --- --- --- --- 0
10/21/2015 9:35:26 --- --- --- --- 0
10/21/2015 9:37:26 --- --- --- --- 0
10/21/2015 9:39:26 --- 1.46 0.97 1.53 13",
con="testdata.csv")
输出:
library(stringr)
header <- readLines("testdata.csv", n=7)
headers <- lapply(header[1:6], str_match, "(^.*?):(.*)")
date <- c(field="Date",
value=str_match(header[7], "[0-9]{4}-[0-9]{2}-[0-9]{2}"))
time <- c(field="Time",
value=str_match(header[7], "[0-9]{2}:[0-9]{2}:[0-9]{2}"))
d <- do.call(rbind,
lapply(headers, function(x) c(str_trim(x[2]), str_trim(x[3]))))
d <- rbind(d, date, time)
d <- data.frame(d, row.names=seq_len(nrow(d)))
然后,您可以将此数据加入/合并到数据表中。