导入不带行分隔符的固定宽度数据文件

2024-01-03

我有没有行分隔符的固定宽度数据文件(.dbf)。该数据文件的两行如下所示:

20141101 77h  3.210                                  0    3 20141102 76h  3.090                                  0    3 

一条线的宽度是c(8,4,7,41)对于日期(8)、一些时间度量(4)、数据点(7)以及我可以在一个“休息”列(41)中总结的一些其他列。一行之后没有分隔符,下一行仅附加到第一行。所有时间步基本上都是连续写在一大行中。该文件中只有数字、字符和空格。

With read.fwf('filepath', widths = c(8,4,7,41))由于缺少行分隔符,R 在第一行之后停止读取。

有什么说法可以诉说read.fwf()当没有行分隔符时何时开始读取新行?或者我应该使用不同的读取命令?

提前致谢。


也许不是最好的主意,但这应该可行:

content <- scan('filepath','character',sep='~') # Warning choose a sep not appearing in datas to get the whole file.
# Split content in lines:
lines <- regmatches(content,gregexpr('.{60}',content))[[1]]
x <- tempfile()
write(lines,x)
data <- read.fwf(x, widths = c(8,4,7,41))
unlink(x)

这个想法是读取整个文件,将每次出现的 60 个字符放入一个条目中,将其写入临时文件,并在删除临时文件之前从该临时文件中读取数据。

另一种方法是使用正则表达式和包stringr(仍然包含上面扫描得到的内容):

library(stringr)
d <- data.frame( str_match_all( content, "(.{8})(.{4})(.{7})(.{41})")[[1]][,2:5], stringsAsFactors=FALSE)

这使:

        V1   V2      V3                                        V4
1 20141101  77h   3.210                                   0    3 
2 20141102  76h   3.090                                   0    3 

str_match_all返回一个列表,这里有 1 个元素,因为只有一行作为输入,所以我们将其删除[[1]].

现在返回的是 5 列,第一列是完全匹配,其他列是捕获组,因此我们在第 2 列到第 5 列上对矩阵进行子集化,以仅获取我们需要的 4 列并将其包装在其中as.data.frame最后得到一个 data.frame 。

然后你可以用以下方式命名列colnames(d) <- c('date','time','data_point','rest')

如果您想清理空格,可以将 str_extract_all 结果包装在trimws(感谢@jaap提醒这个功能)像这样:

td <- data.frame( trimws( str_match_all( content, "(.{8})(.{4})(.{7})(.{41})")[[1]][,2:5] ), stringsAsFactors=FALSE)

Output:

        X1  X2    X3     X4
1 20141101 77h 3.210 0    3
2 20141102 76h 3.090 0    3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导入不带行分隔符的固定宽度数据文件 的相关文章

  • 可以明确声明包依赖项的版本吗?

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • 将密度曲线拟合到 R 中的直方图

    R中有没有可以将曲线拟合到直方图的函数 假设您有以下直方图 hist c rep 65 times 5 rep 25 times 5 rep 35 times 10 rep 45 times 4 看上去很正常 但其实是歪曲的 我想拟合一条倾
  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 从网络源获取 R 中的数据作为数据框

    我正在尝试使用 RCurl 包将一些空气污染背景数据作为 data frame 直接加载到 R 中 该网站有 3 个下拉框 用于在下载 csv 文件之前选择选项 如下图所示 我试图从下拉框中选择 3 个值 并使用 下载 CSV 按钮将数据作
  • 如何调整ggplot直方图的时间刻度轴

    我正在使用一个数据框 其中一列包含POSIXct日期时间值 我正在尝试使用绘制这些时间戳的直方图ggplot2但我有两个问题 我不知道如何设置 binwidthgeom histogram 我想将每个垃圾箱设置为一天或一周 我尝试提供 di
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 当每个记录都是一个段落并且某些记录有 4 个字段而其他记录有 6 个字段时,如何将文本文件读入 R

    如何读取文本文件 其中每条记录都是一个段落 每个换行符表示单独的字段 复杂的是 有些记录有 4 行 有些记录有 6 行 当字段数量的差异为 1 时 DWin 解决了我的问题 但当字段数量差异为 2 时 一切都崩溃了 你可以有一个在这里看看他
  • 在另一个 Rmd 中运行选定的块

    我已经在源 Rmd 文件中运行了分析 并且希望仅使用few来自源的块 我已经看到了一些关于从源 Rmd 中提取所有块的答案来自另一个 Rmd 中的 Rmd 文件的源代码 https stackoverflow com questions 4
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 太多的导入正在垃圾邮件我的 Java 代码

    在我的项目中我有一个shapes包含我为图形程序设计的形状的包 例如 长方形 and Circle 我还有一两个同名的软件包java awt类 现在 由于我不想重命名代码库中的每个类 为了显示我的源文件 当我声明一个新的矩形时 我需要执行以
  • 解析,用三点参数替换

    让我们考虑一个典型的deparse substitute R call f1 lt function u x y print deparse substitute x varU vu varX vx varY vy f1 u varU x
  • 为什么这些数字不相等?

    下面的代码显然是错误的 有什么问题 i lt 0 1 i lt i 0 05 i 1 0 15 if i 0 15 cat i equals 0 15 else cat i does not equal 0 15 i does not eq
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • 有没有一种简单的方法来判断存储在一个列表中的许多数据帧是否包含相同的列?

    我有一个包含许多数据框的列表 df1 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df2 lt data frame A 1 5 B 2 6 C LETTERS 1 5 df3 lt data frame
  • 带 R 的多彩标题

    我想添加颜色某些词在我的图表标题中 我已经能够在这里找到一些先例 http blog revolutionanalytics com 2009 01 multicolor text in r html 具体来说 我希望用撇号括起来的文本 在
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 使用predictNLS围绕R中的拟合值创建置信区间?

    我想使用 R 中 propogate 包中的 PredictNLS 围绕一大组拟合值构建置信区间 作为示例 我将使用它们在函数描述中引用的数据集 https rdrr io github anspiess propagate man pre

随机推荐

  • Regex101 与 JavaScript String.match 分歧

    这个正则表达式 w g应该匹配每个单词字符between大括号 相反 我得到了不同的结果Regex101 JavaScript 引擎 https regex101 com r iD4uP6 1 and Chrome 控制台 Regex101
  • MongoEngine - 另一个用户已通过此数据库的身份验证。您必须先退出

    谁能解释一下为什么我收到错误另一个用户已通过此数据库的身份验证 您必须先退出当使用连接到 MongoDB 时Flask Mongo引擎 https github com MongoEngine flask mongoengine from
  • 在 Prolog 中断言数字谓词

    Prolog 中是否有可能断言代表数字的事实 例如 我想使用谓词distance 2并断言诸如distance town1 city2 1200 The distance town1 city2 1200term 是该术语的语法糖 dist
  • 如何引导 log4j 输出,以便不同的日志级别发送到不同的附加程序?

    是否可以将 debug 和 info 输出写入控制台 而 info 输出仅写入某个日志文件 例如 给定以下日志记录 LOG debug fileContent LOG info fileLength 对应的是什么log4j xml看起来像
  • MongoDB,如何对文档进行分组

    我的收藏有这样的数据 code 1 location 1 QUEEN STREET id 1 code 1 location 2 KING STREET id 2 code 2 location 1 QUEEN STREET id 3 co
  • 不请求Window.FEATURE_ACTION_BAR问题

    我正在尝试构建我的应用程序 但没有成功 我尝试了多种方法 但没有任何效果 例外的是 Caused by java lang IllegalStateException This Activity already has an action
  • 如何创建一个不可销毁的实例

    想象一下我有一堂课 TCantBeDestroyed 有人知道如何直接创建一种在两种情况下都不能被销毁的实例 不能被毁坏 免费 CantBeDestroyed Destroy 并且不能被演员摧毁 TObject CantBeDestroye
  • 根据时间序列数据帧的时间列更正日期列中的条目

    我有一个时间序列数据框 它包含三列 日期 时间和值 它看起来像这样 date time value 11 03 2020 1103 5 11 03 2020 0000 10 11 03 2020 0100 6 12 03 2020 0201
  • 层次聚类大稀疏距离矩阵 R

    我试图在非常大的距离上执行 fastclust 但遇到了问题 我有一个非常大的 csv 文件 大约 9100 万行 因此 for 循环在 R 中花费太长时间 其中包含关键字 大约 50 000 个唯一关键字 之间的相似性 当我读入 data
  • sfErrorNotifierPlugin:“默认”上下文不存在

    我已经安装了sfErrorNotifierPlugin 当两个选项reportErrors reportPHPErrorsreportPHPWarnings reportWarnings都设置为false时 一切正常 但我想捕获 PHP 异
  • 删除前导 0 直至小数点

    我想删除小数中的前导零 所以我想要的输出应该是 324 not 0 324 我试过str replaceFirst 0 没用 我也尝试了正则表达式 没有结果 是的 我正在使用 BigDecimal Try this str str repl
  • 发布到数据:url — 有任何用例吗?

    在当前的 HTML5 规范中 可以POST具有数据方案的动作的表单 http www w3 org TR 2011 WD html5 20110525 association of controls and forms html form
  • Android解析json数据并添加搜索功能

    抱歉我的英语不好 我是 android 新手 我将 json 数据解析到 listview 中 现在我想给他添加一个搜索功能 但我有一个问题 当我在 edittext 中输入单词时 然后在 listview 中输入我的项目是重复的 并且项目
  • R 一元运算符重载:风险?

    在我不断寻求避免在一些简单命令中使用括号的过程中 我编写了以下运算符来创建新的图形窗口 我的问题是 除了明显无法在变量 newdev 上执行 not 函数之外 我是否面临 破坏 R 中任何内容的风险 function to overload
  • BASH:根据公共字段名称连接 2 个 CSV 文件

    我有 2 个 CSV 文件 我需要使用 BASH 连接它们 file 1 csv columns track id title song id release artist id artist mbid artist name durati
  • 从 OpenJDK Windows 创建 jre

    我们正在从 Oracle JDK JRE 切换到 OpenJDK 现在我只找到了 JDK 但我还想从 OpenJDK 获得 JRE 这是为了在客户端上安装我们的应用程序 而不需要完整的 JDK 有没有办法从 OpenJDK for Wind
  • git 过滤器分支到 git 过滤器存储库转换

    我按照此命令对 git 存储库中的所有提交执行更漂亮的操作 git filter branch tree filter prettier write js echo Error formatting possibly invalid JS
  • Python:在祖父母目录中导入文件

    等级制度 scripts web script1 py tests script2 py common utils py 我如何在 script1 和 script2 中导入 utils 并且仍然能够单独运行这些脚本 即 python sc
  • 使用 JPA 解析简单查询时出现语法错误

    我使用 netbeans 向导创建了实体 bean 并尝试从数据库获取数据 无论我使用什么 SQL 查询 它都不起作用 我尝试使用由向导创建的命名查询 NamedQuery name Usr findAll query SELECT u F
  • 导入不带行分隔符的固定宽度数据文件

    我有没有行分隔符的固定宽度数据文件 dbf 该数据文件的两行如下所示 20141101 77h 3 210 0 3 20141102 76h 3 090 0 3 一条线的宽度是c 8 4 7 41 对于日期 8 一些时间度量 4 数据点 7