匹配字符串在多列上循环

2024-06-04

我有来自一项开放式调查的数据。我有一个注释表和一个代码表。代码表是一组主题或字符串。

我正在尝试做的事情: 检查代码表中相关列中是否存在开放式注释中的单词/字符串。在评论表中为特定主题添加一个新列,并添加一个二进制 1 或 0 来表示已标记哪些记录。

代码表中有相当多的列,这些列是实时且不断变化的,列顺序和列数可能会发生变化。

我目前正在以一种相当复杂的方式来做这件事,我用多行代码单独检查每一列,我认为可能有更好的方法来做到这一点。

我不知道如何让 lapply 与 stringi 函数一起使用。

非常感谢您的帮助。

这是一组示例代码,以便您可以了解我正在尝试执行的操作:

#Two tables codes and comments
#codes table
codes <- structure(
  list(
    Support = structure(
      c(2L, 3L, NA),
      .Label = c("",
                 "help", "questions"),
      class = "factor"
    ),
    Online = structure(
      c(1L,
        3L, 2L),
      .Label = c("activities", "discussion board", "quiz"),
      class = "factor"
    ),
    Resources = structure(
      c(3L, 2L, NA),
      .Label = c("", "pdf",
                 "textbook"),
      class = "factor"
    )
  ),
  row.names = c(NA,-3L),
  class = "data.frame"
)
#comments table
comments <- structure(
  list(
    SurveyID = structure(
      1:5,
      .Label = c("ID_1", "ID_2",
                 "ID_3", "ID_4", "ID_5"),
      class = "factor"
    ),
    Open_comments = structure(
      c(2L,
        4L, 3L, 5L, 1L),
      .Label = c(
        "I could never get the pdf to download",
        "I didn’t get the help I needed on time",
        "my questions went unanswered",
        "staying motivated to get through the textbook",
        "there wasn’t enough engagement in the discussion board"
      ),
      class = "factor"
    )
  ),
  class = "data.frame",
  row.names = c(NA,-5L)
)

#check if any words from the columns in codes table match comments

#here I am looking for a match column by column but looking for a better way - lappy?

support = paste(codes$Support, collapse = "|")
supp_stringi = stri_detect_regex(comments$Open_comments, support)
supp_grepl = grepl(pattern = support, x = comments$Open_comments)
identical(supp_stringi, supp_grepl)
comments$Support = ifelse(supp_grepl == TRUE, 1, 0)

# What I would like to do is loop through all columns in codes rather than outlining the above code for each column in codes

这是一种使用的方法string::stri_detect_regex() with lapply()创建 TRUE = 1、FALSE = 0 的向量,具体取决于是否有任何单词Support, Online or Resources向量在注释中,并将这些数据与注释合并回来。

# build data structures from OP

resultsList <- lapply(1:ncol(codes),function(x){
     y <- stri_detect_regex(comments$Open_comments,paste(codes[[x]],collapse = "|"))
     ifelse(y == TRUE,1,0)   
     })

results <- as.data.frame(do.call(cbind,resultsList))
colnames(results) <- colnames(codes)
mergedData <- cbind(comments,results)
mergedData

...以及结果。

> mergedData
  SurveyID                                          Open_comments Support Online
1     ID_1                 I didn’t get the help I needed on time       1      0
2     ID_2          staying motivated to get through the textbook       0      0
3     ID_3                           my questions went unanswered       1      0
4     ID_4 there wasn’t enough engagement in the discussion board       0      1
5     ID_5                  I could never get the pdf to download       0      0
  Resources
1         0
2         1
3         0
4         0
5         1
> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

匹配字符串在多列上循环 的相关文章

  • R 中二维核密度估计的混乱

    核密度估计器用于估计特定的概率密度函数 参见mvstat net http www mvstat net tduong research seminars seminar 2001 05 and scikit learn 文档 http s
  • 包“diamonds”不可用(对于 R 版本 3.0.0)[重复]

    这个问题在这里已经有答案了 在我的 R 环境中拥有钻石包 数据集的简单方法是什么 我是使用 RStudio 3 0 的新手 gt install packages diamonds Warning in install packages p
  • 按组连接/粘贴列并添加到原始数据

    我有一个名称数据框 名称 按 部门 分组 Dept Date Name 30 07 DEC 02 Raphaely 30 18 MAY 03 Khoo 40 07 JUN 02 Mavris 50 01 MAY 03 Kaufling 50
  • knitr pandoc:“无法使用 pdf writer 生成 pdf 输出”

    Up front using pandoc 在knitr中 当尝试将 md或 Rmd编译为PDF时 它会抱怨 我正在简化流程可重复的研究 正如许多地方所记录的那样 我在用着pandoc and knitr并制作出色的文档 我还试图为一些不太
  • R 绘制一些 unicode 字符,但不绘制其他字符

    我们的系统管理员刚刚将我们的操作系统升级到 SLES12SP1 我重新安装了 Rv3 2 3 并尝试绘图 我用cairo pdf并尝试绘制 x 标签为的图 u0298即太阳能符号 但它不起作用 标签只是空白 例如 cairo pdf Rpl
  • igraph - 将文本添加到社区图

    使用下面的代码 我可以在 igraph 提供的 空手道俱乐部 示例中生成社区图 请参见第一张图片 library igraph karate lt make graph Zachary wc lt cluster walktrap kara
  • 按组渐进串联列[重复]

    这个问题在这里已经有答案了 假设我有这个输入 ID date 1 date 2 str 1 1 2010 07 04 2008 01 20 A 2 2 2015 07 01 2011 08 31 C 3 3 2015 03 06 2013
  • 如何使 quarto html 文档使用全屏宽度?

    我正在使用 R 创建一个四开 html 文档并将其发布到 rpubs com 上的网络上 该文档仅使用窗口的中间三分之一 而将左侧和右侧的三分之一留为空白 我怎样才能告诉四开使用整个窗口 这是一个非常简单的可重现示例 由于某种原因 它确实使
  • 如何在其他脚本中包含(源)R 脚本

    我创建了一个实用程序 R 脚本 util R 我想从项目中的其他脚本中使用它 确保此脚本定义的函数可在我的其他脚本中运行的正确方法是什么 我正在寻找类似的东西require函数 仅在尚未加载的情况下加载包 我不想打电话source util
  • R data.table如何创建重复项[重复]

    这个问题在这里已经有答案了 I have dataDT lt data table A 1 3 B 1 3 dataDT A B 1 1 1 2 2 2 3 3 3 I want dataDT lt data table A c 1 3 1
  • 如何使用核心 R 操作/访问“dist”类实例的元素?

    R 中的基本 公共类称为 dist 并且是对称距离矩阵的相对有效的表示 不像一个 matrix 对象 但是 似乎不支持操纵 dist 使用索引对实例 操作员 例如 以下代码不返回任何内容 NULL 或出现错误 First create an
  • 每行和每列都有条件的随机值(0 和 1)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 您好 我正在尝试在 R 中创建一个 600 行和 18 列的数据框 但是 每行 18 列中只能随机有 3 个 1 例如 A E F 列
  • 在 ggplot2 中使用 FontAwesome 作为点的替代品

    这可能是一个相当基本的事情 但我似乎找不到有意义的答案 我正在尝试使用 R 中的 fontawesome 包将表情符号用作 ggplot2 图表中的点 但我很难弄清楚如何为每个变量分配不同的表情符号 这是一些示例数据 我们将数据框称为 样本
  • 将嵌套 for 循环转换为 R 中的并行循环

    下面您可以在 R 中找到一段代码 我想将其转换为使用多个 CPU 作为并行进程运行 我尝试使用foreach包 但并没有走得太远 考虑到我有 3 级嵌套循环 我找不到一个很好的例子如何让它工作 我们将非常感谢您的帮助 下面的代码示例 我做了
  • multidplyr :将函数分配给集群

    参见下面的工作解决方案 我想使用 multidplyr 并行化函数 calculs R f lt function x return x 1 main R library dplyr library multidplyr source ca
  • 从数据框中提取具有最高值和最低值的行

    我对 R 还很陌生 我主要用它来可视化统计数据ggplot2图书馆 现在我遇到了数据准备的问题 我需要编写一个函数 该函数将从数据框中删除指定列中具有最高和最低值的一些数字 2 5 或 10 行 并将它们放入另一个数据框中 并对两个因素的每
  • tmap 仅在 sf 几何列中绘制第一个多边形

    tmap 仅绘制 sf 几何列中的第一个多边形 但是plot 得到他们全部 一些 github 问题tmap https github com mtennekes tmap issues 360 and leaflet https gith
  • 带有预先计算值的 geom_boxplot

    过去 我已经能够使用 ggplot2 创建箱线图 方法是提供下须线 下分位数 中位数 上分位数和上须线以及 x 轴标签 例如 DF lt data frame x c A B min c 1 2 low c 2 3 mid c 3 4 to
  • 使Sweave + RweaveHTML将所有图形放在指定文件夹中

    作为细化这个问题 https stackoverflow com questions 4674567 how to make sweave copy generated graphics to a subfolder 有谁知道如何告诉 Sw
  • 尽管包在本地构建并通过了所有检查,但 CRAN 上的自动包提交错误

    我正在尝试向 CRAN 提交包 但它未通过一些自动检查 https win builder r project org incoming pretest influenceR 0 1 3 20230517 194638 Debian 00c

随机推荐