Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 导入多个范围和标题_R_Excel_Csv_Import - Fatal编程技术网

R 导入多个范围和标题

R 导入多个范围和标题,r,excel,csv,import,R,Excel,Csv,Import,我正在尝试导入以下文件,其中包含两个重复的要提取的数据部分。第一组以未使用的标题(第5行)开始,真实标题以“ES”开始(第5行)。数据的下一部分以未使用的标题(第13行)开始,真实标题以“LU”(第14行)和更多变量名开始。有许多这样的文件,每个文件中都有不同数量的不同长度的EU和LS部分。我需要提取LS和EU数据以分离数据帧。不幸的是,这些文件是传感器阵列中的“原样”,我无法改变这一点,我不想在excel中完成所有这些,但可能不得不这样做。在实际文件中,每个EU和LS集合可能有数百行这样的行

我正在尝试导入以下文件,其中包含两个重复的要提取的数据部分。第一组以未使用的标题(第5行)开始,真实标题以“ES”开始(第5行)。数据的下一部分以未使用的标题(第13行)开始,真实标题以“LU”(第14行)和更多变量名开始。有许多这样的文件,每个文件中都有不同数量的不同长度的EU和LS部分。我需要提取LS和EU数据以分离数据帧。不幸的是,这些文件是传感器阵列中的“原样”,我无法改变这一点,我不想在excel中完成所有这些,但可能不得不这样做。在实际文件中,每个EU和LS集合可能有数百行这样的行

我曾尝试将以下代码改编为索引EU部分,然后将其提取并清理,然后在LS部分上执行同样的操作,但我甚至没有让它工作。部分原因是EU位于两个标题行中。我确实看到过使用perl脚本的代码,但从未使用过这种语言

lns = readLines("lake1.txt")
idx = grepl("EU", lns)
df = read.table(text=lns[!idx])
wd = diff(c(which(idx), length(idx) + 1)) - 1
df$label = rep(lns[idx], wd)
我不确定添加CSV文件示例的最佳方法,但这里是

Garbage Text 1,,,,,,,,
Garbage Text 2,,,,,,,,
Garbage Text 3,,,,,,,,
,,,,,,,,
INTTIME ('sec'),SAMPLE ('sec'),ES_DARK ('uW/cm^2/nm'),ES_DARK ('uW/cm^2/nm'),ES_DARK ('uW/cm^2/nm'),CHECK (''),DATETAG (NONE),TIMETAG2 (NONE),POSFRAME (NONE)
ES,DELAY,344.83,348.23,351.62,SUM,NONE,NONE,COUNTS
0.032,0,0.35441789,-0.00060208,0.10290995,87,2017015,10:42:39,1
0.032,0,-0.36023974,-0.22242269,-0.09639,109,2017015,10:42:40,10
0.032,0,0.07552711,0.01524224,-0.16756855,91,2017015,10:42:48,41
,,,,,,,,11304
,,,,,,,,11312
,,,,,,,,
INTTIME ('sec'),SAMPLE ('sec'),LU ('uW/cm^2/nm/sr'),LU ('uW/cm^2/nm/sr'),LU ('uW/cm^2/nm/sr'),CHECK (''),DATETAG (NONE),TIMETAG2 (NONE),POSFRAME (NONE)
LU,DELAY,344.37,347.75,351.13,SUM,NONE,NONE,COUNTS
0.032,0,0.02288441,0.02891912,0.03595322,53,2017015,10:42:38,2
0.032,0,-0.00014323,0.00024047,0.00001585,212,2017015,10:42:38,6
0.032,0,0.00114258,0.00091736,-0.0000495,16,2017015,10:42:39,9
0.032,0,0.00020744,0.0004186,0.00027721,118,2017015,10:42:40,16
,,,,,,,,11310
,,,,,,,,
INTTIME ('sec'),SAMPLE ('sec'),ES ('uW/cm^2/nm'),ES ('uW/cm^2/nm'),ES ('uW/cm^2/nm'),CHECK (''),DATETAG (NONE),TIMETAG2 (NONE),POSFRAME (NONE)
ES,DELAY,344.83,348.23,351.62,SUM,NONE,NONE,COUNTS
0.032,0,56.7600789,59.43147464,62.83968564,186,2017015,10:42:38,3
0.032,0,56.27202003,59.52654061,62.86815706,29,2017015,10:42:38,4
,,,,,,,,11309
,,,,,,,,11311
,,,,,,,,
INTTIME ('sec'),SAMPLE ('sec'),LU ('uW/cm^2/nm/sr'),LU ('uW/cm^2/nm/sr'),LU ('uW/cm^2/nm/sr'),CHECK (''),DATETAG (NONE),TIMETAG2 (NONE),POSFRAME (NONE)
LU,DELAY,344.37,347.75,351.13,SUM,NONE,NONE,COUNTS
0.032,0,-0.00011611,-0.00039544,-0.00014584,3,2017015,10:42:42,20
0.032,0,-0.00032394,-0.00020563,-0.00020383,229,2017015,10:42:46,39
这就是两个数据帧最终的外观:

数据帧1

ES,DELAY,344.83,348.23,351.62,SUM,NONE,NONE,COUNTS
0.032,0,0.35441789,-0.00060208,0.10290995,87,2017015,10:42:39,1
0.032,0,-0.36023974,-0.22242269,-0.09639,109,2017015,10:42:40,10
0.032,0,0.07552711,0.01524224,-0.16756855,91,2017015,10:42:48,41
0.032,0,56.7600789,59.43147464,62.83968564,186,2017015,10:42:38,3
0.032,0,56.27202003,59.52654061,62.86815706,29,2017015,10:42:38,4
数据帧2

LU,DELAY,344.37,347.75,351.13,SUM,NONE,NONE,COUNTS
0.032,0,0.02288441,0.02891912,0.03595322,53,2017015,10:42:38,2
0.032,0,-0.00014323,0.00024047,0.00001585,212,2017015,10:42:38,6
0.032,0,0.00114258,0.00091736,-0.0000495,16,2017015,10:42:39,9
0.032,0,0.00020744,0.0004186,0.00027721,118,2017015,10:42:40,16
0.032,0,-0.00011611,-0.00039544,-0.00014584,3,2017015,10:42:42,20
0.032,0,-0.00032394,-0.00020563,-0.00020383,229,2017015,10:42:46,39

下面是一种使用工具解决此问题的方法

用于读取/写入csv文件

用于数据帧操作

用于字符串操作

库(readr)
图书馆(dplyr)
图书馆(stringr)

df_1我不明白您是如何得到示例输出的。为什么输出
ES
文件中不包括第9-11行,以及
0.512
值和最后一行在输出
LU
文件中的位置?我正在缩短输出,所以它不会太长。很抱歉,我可以添加它,但想限制帖子的长度。没关系,只是想确保我理解。另外,您是否打算排除第10-11行(
,,,,,,,11309
)是的。我还编辑了输出。我不确定显示预期的2个独立数据帧的最佳方式,也不会解决这个问题。我对这些帖子有些陌生。这是我见过的最优雅的解决方案@austensen。非常感谢你。我还没有看到tidyverse代码以这种方式使用,我将努力更好地理解您是如何做到这一点的,并在将来应用它。就在我以为自己越来越擅长R的时候,我意识到我真正知道的是多么少。@BillPerry很高兴听到这对我很有帮助!是的,tidyverse的包装真的很棒。如果你想了解更多,除了浏览,我建议你阅读