R 按选定行号动态分割数据帧/子集 - 解析文本网格 praat

2023-12-28

我正在尝试处理一个名为的“分段文件”.TextGrid(由 Praat 程序生成)。 )

原始格式如下所示:

File type = "ooTextFile"
Object class = "TextGrid"
xmin = 0 
xmax = 243.761375 
tiers? <exists> 
size = 17 
item []: 
    item [1]:
        class = "IntervalTier" 
        name = "phones" 
        xmin = 0 
        xmax = 243.761 
        intervals: size = 2505 
        intervals [1]:
            xmin = 0 
            xmax = 0.4274939687384032 
            text = "_" 
        intervals [2]:
            xmin = 0.4274939687384032 
            xmax = 0.472 
            text = "v" 
        intervals [3]:
[...]

(然后重复到 EOF,文件中的 n 个项目(注释层)的间隔为 [3 到 n]。

有人提出了一个解决方案 http://nltk.googlecode.com/svn/trunk/nltk_contrib/nltk_contrib/textgrid.py using rPython R 包 http://rpython.r-forge.r-project.org/.

很遗憾 :

  • 我对 Python 不太了解
  • rPython 版本不适用于 R.3.0.2(我正在使用)。
  • 我的目标是开发这个解析器,专门在 R 环境下进行分析。

现在我的目标是将该文件分割成多个数据帧。每个数据框应包含一项(注释层)。

# Load the Data
txtgrid <- read.delim("./xxx_01_xx.textgrid", sep=c("=","\n"), dec=".", header=FALSE)
# Erase White spaces (use stringr package)
txtgrid[,1] <- str_trim(txtgrid[,1])
# Convert row.names to numeric 
num.row<- as.numeric(row.names(txtgrid))
# Redefine the original textgrid and add those rows (I want to "keep them in case for later process)
txtgrid <- data.frame(num.row,txtgrid)
colnames(txtgrid) <- c("num.row","object", "value")
head(txtgrid)

的输出head(txtgrid)非常原始,所以这是文本网格的前 20 行txtgrid[1:20,]:

   num.row          object                value
1        1       File type           ooTextFile
2        2    Object class             TextGrid
3        3            xmin                   0 
4        4            xmax          243.761375 
5        5 tiers? <exists>                     
6        6            size                  17 
7        7        item []:                     
8        8       item [1]:                     
9        9           class        IntervalTier 
10      10            name              phones 
11      11            xmin                   0 
12      12            xmax             243.761 
13      13 intervals: size                2505 
14      14  intervals [1]:                     
15      15            xmin                   0 
16      16            xmax  0.4274939687384032 
17      17            text                   _ 
18      18  intervals [2]:                     
19      19            xmin  0.4274939687384032 
20      20            xmax               0.472 

现在我已经对其进行了预处理,我可以:

# Find the number of the rows where I want to split (i.e. Item)
tier.begining <- txtgrid[grep("item", txtgrid$object, perl=TRUE), ]
# And save those numbers in a variable
x <- as.numeric(row.names(tier.begining))

这个变量x给我数字-1,其中我的数据应该分成几个数据帧。

我有 18 个项目 -1 (第一个项目是 item[] 并包括所有其他项目。所以向量x is :

     x
    [1]     7     8 10034 14624 19214 22444 25674 28904 31910 35140 38146 38156 38566 39040 39778 40222 44800
[18] 45018

我怎样才能告诉R:将此数据帧分割为多个数据帧textgrids$nameoftheItem以这样的方式,我可以获得尽可能多的项目数据框?,例如:

textgrid$phones
         item [1]:
            class = "IntervalTier" 
            name = "phones" 
            xmin = 0 
            xmax = 243.761 
            intervals: size = 2505 
            intervals [1]:
            xmin = 0 
            xmax = 0.4274939687384032 
            text = "_" 
            intervals [2]:
            xmin = 0.4274939687384032 
            xmax = 0.472 
            text = "v" 
            [...]
            intervals [n]:
textgrid$syllable
    item [2]:
            class = "IntervalTier" 
            name = "syllable" 
            xmin = 0 
            xmax = 243.761 
            intervals: size = 1200
            intervals [1]:
            xmin = 0 
            xmax = 0.500
            text = "ve" 
            intervals [2]:
            [...]
            intervals [n]:
    textgrid$item[n]

我想用

txtgrid.new <- split(txtgrid, f=x)

但这个消息是正确的:

Warning message: In split.default(x = seq_len(nrow(x)), f = f, drop = drop, ...) : data length is not a multiple of split variable

我没有得到所需的输出,似乎行号不相互跟随,并且文件全部混合在一起。

我也尝试过一些which, daply (from plyr) & subset功能,但从未让它们正常工作!

我欢迎任何正确有效地构建这些数据的想法。理想情况下,我应该能够链接它们之间的项目(注释层)(不同层的 xmin 和 xmax),以及多个文本网格文件,这只是开始。


的长度split向量应等于行数data.frame.

请尝试以下操作:

txtgrid.sub <- txtgrid[-(1:grep("item", txtgrid$object)[1]), ]

grep("item", txtgrid.sub$object)[-1]

splits <- unlist(mapply(rep, seq_along(grep("item", txtgrid.sub$object)),
                        diff(c(grep("item", txtgrid.sub$object), 
                               nrow(txtgrid.sub) + 1))))

df.list <- split(txtgrid.sub, list(splits))

EDIT:

然后,您可以通过执行以下操作来简化数据:

l <- lapply(df.list, function(x) {
  tmp <- as.data.frame(t(x[, 3, drop=FALSE]), stringsAsFactors=FALSE)
  names(tmp) <- make.unique(make.names(x[, 2]))
  tmp
})

library(plyr)
do.call(rbind.fill, l)


  item..1..        class     name xmin    xmax intervals..size
1      <NA> IntervalTier   phones    0 243.761            2505
2      <NA> IntervalTier syllable    0 243.761            2505
  intervals..1.. xmin.1             xmax.1 text intervals..2..
1           <NA>      0 0.4274939687384032    _           <NA>
2           <NA>      0 0.4274939687384032    _           <NA>
              xmin.2 xmax.2
1 0.4274939687384032  0.472
2               <NA>   <NA>

注意:我在上面使用了虚拟数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R 按选定行号动态分割数据帧/子集 - 解析文本网格 praat 的相关文章

  • 组合上标和包含 < 符号的变量标签时使用 ggplot geom_text

    我在将 R2 注释添加到多面图中时遇到问题 其中我的 R2 值有时 例如 使用 iris 数据集 我首先使用之前计算的 R2 值设置一个新的数据框 x 和 y 位置也已设置 因为每个方面的 x 和 y 位置都不同 对于 iris 数据集来说
  • Mac OS Big Sur R 编译错误:ld:找不到 CoreFoundation 框架

    在我的 Xcode 自动更新到 12 4 后 我的 Rstudio 包编译中断并抛出以下错误 ld framework not found CoreFoundation collect2 error ld returned 1 exit s
  • str_count 具有重叠子字符串

    我正在尝试计算字符向量中子字符串的出现次数 例如 lookin lt c babababa bellow ra baba searchfor lt aba str count lookin searchfor 返回 2 0 1 但是 我希望
  • Eclipse 和 R 中的 StatET

    我已经成功地将 StatET 安装到 eclipse 中 并且我有一个名为 Test 的 Java 项目 其中包含一些代码 我希望能够在该项目文件夹中保留 R 文件并将其作为独立的 R 脚本运行 与 Java 程序分开 我怎样才能做到这一点
  • 如何根据时间戳列制作时间跨度列?

    我有一个数据表 其中第 1 列中包含时间戳 第 2 列中包含事件 时间戳的格式为Y m d H M OS3 e g 2019 09 26 07 29 22 778 我想添加一个新列 其中包含时间戳 2 到时间戳 1 之间的差异的时间跨度值
  • R 在设置宽度和高度的 PDF 中缩放绘图元素

    尽管发送到 PDF 的 R 图可以在插图或页面布局软件中随意重新缩放 但科学期刊通常坚持提供的图具有特定的尺寸 是否可以直接在 R 中在给定 PDF 大小内缩放所有绘图元素的大小 require ggplot2 p lt qplot dat
  • 使用 dplyr 计算组平均值,同时排除当前观察值

    Using dplyr 最好 我试图计算每个观察值的组平均值 同时从组中排除该观察值 看来这应该可以通过组合来实现rowwise and group by 但这两个功能不能同时使用 给定这个数据框 df lt data frame grou
  • 在 R 中,如何将整个命令行放入二元运算符的 sys.call() 中?

    我为 R 编写了一个二元运算符函数 即名称类似于 X 这样就不必输入 X a b 我可以使用更方便的语法a X b 我的目标是有一个包装器 lt 它会执行一些操作 例如记录对该环境中的对象所做的操作并检查 受保护 属性 该属性会在覆盖该对象
  • 数据表中的最大行数

    我的 data table 中有一个包含 8 000 000 行 100 列的数据集 其中每列都是一个计数 我需要找到每行的最大计数以及该最大值位于哪一列 我可以使用以下命令快速获取每行的哪一列具有最大值 dt lt dt maxCol w
  • 从组成员数据创建加权图

    假设我有一个 R 数据集 指示组内的个体 这是一个例子 grp lt c 1 1 1 2 2 2 2 3 3 3 4 4 4 5 5 ind lt c A C D B C D E A D E B F E A F data frame grp
  • 基本 R 图:帮助减少多个图之间的空间

    我试图减少一个窗口中多个绘图之间的空间量 但无法实现我想要的 情节和代码如下 我想将图例保留在原处 但减少 B 和 C 之间的空间 如何将图 C 向左 移动到靠近图 B 的位置以模仿 A 和 B 之间的间距 同时保持图例就位 我希望传奇是独
  • 在 expr *之前*执行的任务处理程序

    是否有运行代码的回调before提示输入expr被评价 通过 SO CRAN 和一些谷歌搜索发现了我怀疑的答案 当前的 REPL 实现不可能 如果我错过了类似详细的重复讨论 我深表歉意 我对addTaskCallback 及其函数族 正在阅
  • 如何在R中对多个时间序列应用dtw算法?

    Problem 我有不同车辆速度的时间序列 我的最终目标是根据不同车辆在时间上的速度相似性对它们进行聚类 因此 我基本上需要生成一个距离矩阵 其中每个单元格包含一对车辆速度时间序列之间的距离 我想使用动态时间扭曲 dtw 作为距离度量 所以
  • String.split() 的 ArrayIndexOutOfBoundsException

    这是从文件中读取输入的代码 该文件包含表单中的学生详细信息roll name age street city zipcode 其中很少有值可以null even 对于以下代码 我得到java lang ArrayIndexOutOfBoun
  • 如何使用 formattable 折叠表中的行值组?

    我有兴趣使用以下领域的工具formattableR 包 但我只想在表中显示有更改的地方 也就是说 我想要在kableExtra包通过collapse rows 功能 例如 使用kable and kableExtra 我可以做这个 libr
  • 通过 rpy2 将 numpy 数组传递给 R 时出现不一致数组

    我正在尝试将 numpy 数组传递到 R 中的 GAMLSS 包 import numpy as np import rpy2 robjects as robjects from rpy2 robjects import numpy2ri
  • 如何在 purrr::map_df 之后使用映射向量添加列

    我使用 mtcars 数据集作为示例来说明我的问题 我对每种气缸类型进行了线性回归 并使用 map df 将所有模型结果放在一起 下面的代码和输出 我想要做的是添加另一列名为 圆柱体 4 4 6 6 8 8 我怎样才能在map df中做到这
  • Python 是否有相当于 R 的sample() 函数?

    我想知道Python是否有相当于sample R 中的函数 The sample https stat ethz ch R manual R devel library base html sample html函数使用带替换或不带替换的方
  • data.table 和 pmin 带有 na.rm=TRUE 参数

    我正在尝试使用 pmin 函数和 data table 计算行间的最小值 类似于帖子data table 中的逐行操作和更新 https stackoverflow com questions 16860200 row by row ope
  • 是否有任何 R 函数可以将链接的值可视化为节点内的文本?

    我正在使用 R 包networkD3绘制以下桑基图 这些值设置链接的大小 我需要一个在节点内添加与文本相同的值的函数 Library library networkD3 library dplyr Make a connection dat

随机推荐

  • 如何在Grapesjs中添加iframe?

    我尝试了一些插件 但无法遵循 基本上我想要一个iframe添加和预览播客和其他内容 是否有任何像 youtube 块一样的 iframe 块与 GrapesJS 一起提供 据我所知 目前还没有一个好的grapesjs iframe 插件 如
  • 如何通过 shell 调用在 SWI-Prolog 中显示具有多个自由变量的模式匹配目标的结果?

    让我们使用以下 prolog 基础 father anakinSkywalker princessLeia father anakinSkywalker lukeSkywalker saysOhNo lukeSkywalker 科学爱好者
  • spring security css样式不起作用

    我在使用 spring security 3 0 7 版本 将 css 应用到网页时遇到问题 我有以下配置
  • 当所有值的总和超过双精度限制时,计算平均值的好解决方案是什么?

    我需要计算一组非常大的双精度数 10 9 值 的平均值 这些值的总和超过了双精度数的上限 所以有人知道计算平均值而不需要计算总和的任何巧妙的小技巧吗 我正在使用Java 1 5 You can 迭代计算平均值 http www heikoh
  • 将字典列表转换为字典字典的优雅方法

    我有一个字典列表 如下例所示 listofdict name Foo two Baz one Bar name FooFoo two BazBaz one BarBar 我知道 名称 存在于每个字典 以及其他键 中 并且它是唯一的并且不会出
  • CSS 保留宽高比但填充父级 div

    基本上 我有一个想要用圆圈遮盖的图像 div class thumbnail mask img class thumbnail pic src image jpeg div CSS 我使用 LESS 非常简单 thumbnail mask
  • Spark 字数统计指标示例

    我阅读了 指标 部分火花网站 http spark apache org docs 1 3 1 monitoring html 我想在字数统计示例中尝试一下 但我无法使其工作 Spark conf metrics properties En
  • 获取字典的随机子集[重复]

    这个问题在这里已经有答案了 我有一本非常大的字典 我想提取一个子样本 然后我想对其进行迭代 我试过 import random dictionary a 1 b 2 c 3 d 4 e 5 keys random sample dictio
  • 单个线程池的设计比多个线程池更好吗

    Java 中拥有多个线程池有哪些优点和缺点 我见过代码中有多个线程池用于不同 类型 的任务 我不确定它是更好的设计还是只是开发人员懒惰 一个例子是使用调度线程池执行器 http docs oracle com javase 7 docs a
  • React-Router 外部链接

    由于我使用 React Router 来处理 React 应用程序中的路由 我很好奇是否有一种方法可以重定向到外部资源 说有人打 example com privacy policy 我希望它重定向到 example zendesk com
  • 使用 jQuery 旋转图像 OnClick?

    我有这个代码 http jsfiddle net Q4PUw 2 http jsfiddle net Q4PUw 2 因此 这是一个简单的从隐藏到可见的 jQuery 脚本 我想知道如何做是在 扩展一 类中放置一个图像 该图像将旋转 90
  • Gmail如何在页面之间保留复选框选择

    在 gmail 中 如果您选中标记电子邮件 4 然后移动到不同的 50 或 25 条记录集并标记选择 26 那么如果您来回移动 4 和 26 都会保留 谷歌是如何做到这一点的 是否可以在仅包含 50 条记录的页面中执行类似的操作 并且当单击
  • 如何在 Jenkins 中配置 Selenium HTML 报告

    我们在 Jenkins 中配置了 Java MOJO 一旦在 CI 中构建代码 就会生成可靠的报告 我们有 Junit 和 Selenium 测试用例来测试应用程序 我需要以 HTML 格式呈现来自测试用例的结果 Jenkins 有没有可用
  • Laravel 5 在两列上有很多关系

    两列上是否可以有 hasMany 关系 我的表有两列 user id and related user id 我希望我的关系与任一列相匹配 在我的模型中我有 public function userRelations return this
  • 自定义函数中的序列对象

    我试图有条件地 通过参数 从 4 个序列中获取下一个值 在自定义标量值函数中 我尝试使用 序列的下一个值 序列定义为 CREATE SEQUENCE dbo sequence1 AS int START WITH 1 INCREMENT B
  • Pandas - 在索引中使用 merge_asof 函数

    代码是 import numpy as np import pandas as pd dateparse lambda x pd datetime strptime x d m Y H M vento pd read csv dados t
  • BigDecimal/双精度 - 数字向上舍入更高

    下面的第二个方法调用 setYCooperative 得到错误的值 89 99999435599995 而不是 89 99999435599994 第一次调用 setXCooperative 获得正确的值 29 99993874900002
  • JavaScript 有没有办法定期调用函数?

    JavaScript 有没有办法定期调用函数 The setInterval 方法 重复调用函数或执行代码片段 每次调用之间有固定的时间延迟 它返回一个唯一标识该间隔的间隔 ID 因此您可以稍后通过调用clearInterval 将其删除
  • Android - 将多种字体样式组合成一种字体(Typeface)

    我有几种不同风格的字体 可以说 MyFont default otf MyFont italic otf MyFont bold otf 通常 我会像这样设置 TextView 的字体 Typeface tf Typeface create
  • R 按选定行号动态分割数据帧/子集 - 解析文本网格 praat

    我正在尝试处理一个名为的 分段文件 TextGrid 由 Praat 程序生成 原始格式如下所示 File type ooTextFile Object class TextGrid xmin 0 xmax 243 761375 tiers