将共享数据列中的多个值重新编码/替换为跨数据帧的单个值

2023-12-22

我希望我没有错过它,但我还没有找到解决这个问题的有效方法。 我有一组带有共享列的数据框。这些列包含多个不同的转录错误,其中一些对于多个值是共享的,另一些则不是。 我想用所有数据帧中的正确值(good_values)替换/重新编码转录错误(bad_values)。

我尝试过嵌套map*()除其他事项外,跨数据框、bad_values 和 good_values 列表的函数系列可以实现此目的。这是一个例子:

df1 = data.frame(grp = c("a1","a.","a.",rep("b",7)), measure = rnorm(10))

df2 = data.frame(grp = c(rep("as", 3), "b2",rep("a",22)), measure = rnorm(26))

df3 = data.frame(grp = c(rep("b-",3),rep("bq",2),"a", rep("a.", 3)), measure = 1:9)


df_list = list(df1, df2, df3)
bad_values = list(c("a1","a.","as"), c("b2","b-","bq"))
good_values = list("a", "b")

dfs = map(df_list, function(x) {
  x %>% mutate(grp = plyr::mapvalues(grp, bad_values, rep(good_values,length(bad_values))))
})

我并不一定期望它能够超越单一的好坏值对。但是,我认为嵌套另一个调用map*()在此范围内可能有效:

dfs = map(df_list, function(x) {
x %>% mutate(grp = map2(bad_values, good_values, function(x,y) {
recode(grp, bad_values = good_values)})
})

我尝试了许多其他方法,但没有一个有效。

最终,我想从一组有错误的数据帧中进行处理,如下所示:

[[1]]
  grp    measure
1  a1  0.5582253
2  a.  0.3400904
3  a. -0.2200824
4   b -0.7287385
5   b -0.2128275
6   b  1.9030766

[[2]]
  grp    measure
1  as  1.6148772
2  as  0.1090853
3  as -1.3714180
4  b2 -0.1606979
5   a  1.1726395
6   a -0.3201150

[[3]]
  grp measure
1  b-       1
2  b-       2
3  b-       3
4  bq       4
5  bq       5
6   a       6

到“固定”数据框列表,如下所示:

[[1]]
  grp    measure
1   a -0.7671052
2   a  0.1781247
3   a -0.7565773
4   b -0.3606900
5   b  1.9264804
6   b  0.9506608

[[2]]
  grp     measure
1   a  1.45036125
2   a -2.16715639
3   a  0.80105611
4   b  0.24216723
5   a  1.33089426
6   a -0.08388404

[[3]]
  grp measure
1   b       1
2   b       2
3   b       3
4   b       4
5   b       5
6   a       6

任何帮助将非常感激


这是一个使用的选项tidyverse with recode_factor。当有多个元素需要改变时,创建一个list键/值元素及其使用recode_factor匹配并将值更改为新值levels

library(tidyverse)
keyval <- setNames(rep(good_values, lengths(bad_values)), unlist(bad_values))
out <- map(df_list, ~ .x %>% 
                  mutate(grp = recode_factor(grp, !!! keyval)))

-output

out
#[[1]]
#   grp     measure
#1    a -1.63295876
#2    a  0.03859976
#3    a -0.46541610
#4    b -0.72356671
#5    b -1.11552841
#6    b  0.99352861
#....

#[[2]]
#   grp     measure
#1    a  1.26536789
#2    a -0.48189740
#3    a  0.23041056
#4    b -1.01324689
#5    a -1.41586086
#6    a  0.59026463
#....


#[[3]]
#  grp measure
#1   b       1
#2   b       2
#3   b       3
#4   b       4
#5   b       5
#6   a       6
#....

注意:这不会改变class初始数据集列的

str(out)
#List of 3
# $ :'data.frame':  10 obs. of  2 variables:
#  ..$ grp    : Factor w/ 2 levels "a","b": 1 1 1 2 2 2 2 2 2 2
#  ..$ measure: num [1:10] -1.633 0.0386 -0.4654 -0.7236 -1.1155 ...
# $ :'data.frame':  26 obs. of  2 variables:
#  ..$ grp    : Factor w/ 2 levels "a","b": 1 1 1 2 1 1 1 1 1 1 ...
#  ..$ measure: num [1:26] 1.265 -0.482 0.23 -1.013 -1.416 ...
# $ :'data.frame':  9 obs. of  2 variables:
#  ..$ grp    : Factor w/ 2 levels "a","b": 2 2 2 2 2 1 1 1 1
#  ..$ measure: int [1:9] 1 2 3 4 5 6 7 8 9

一旦我们有了一个键值对list,这也可以用于base R功能

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

将共享数据列中的多个值重新编码/替换为跨数据帧的单个值 的相关文章

  • 单击并按住 R 中的按钮闪亮?

    我希望能够通过单击 R 闪亮按钮来更改参数的值 所以我需要按钮 一个用于增加值 一个用于减少值 我想在按住按钮的同时保持值以一定的速度减少 增加 通过释放按钮的点击 动作应该停止 到目前为止我还没有找到这个选项actionButtons在
  • 返回带有参数的函数的函数

    创建一个应返回包含原始函数参数的函数时 我应该如何处理 例如考虑这个函数 a lt function value function x x value 我希望它返回我在结果函数的参数中指定的值 如下所示 b lt a 3 gt b gt f
  • 根据值的运行总计创建组

    我的数据在一个变量 Y 上是唯一的 另一个变量 Z 告诉我每个 Y 中有多少人 我的问题是我想从这些 Y 和 Z 创建 45 人的组 我的意思是 每当运行总计Z 达到 45 创建一组 然后代码继续创建下一组 我的数据看起来像这样 ID X
  • profvis() 何时以及为何显示“源不可用”?

    我经常分析 R 代码 并大量使用 profvis 对于某些函数 浏览器窗口的上半部分会显示源代码 有时则不会 我不知道什么时候会出现这种情况 对我来说这似乎是随机的 有谁知道 profvis 何时以及为什么无法在顶部窗口中显示代码 发生这种
  • ggplot 中跨组的连续线

    我有一个数据时间序列 其中观察了一些数据 模拟了一些数据 我想生成整个数据系列随时间变化的图 其中颜色表示数据源 但是 我只能弄清楚如何使 ggplot 中的 geom line 连接同一组中的点 这是一个例子来说明 Create samp
  • R 中 write.table 文件名中的变量

    请帮助我解决一个幼稚的问题 已经用谷歌搜索 并尝试了很多变体 但失败了 如何使用 R 中 write table 的文件名中的变量保存文件 脚本循环遍历 dir 中的文件 应用一些函数 然后将结果保存到具有相同名称但附加结尾的文件中 谢谢
  • 按绝对值排序

    有谁知道如何按绝对值对 R 中的向量进行排序 所以 2 3 1 gt 1 2 3 etc 如果我在 python 中这样做 我会创建一对每个值及其符号 按绝对值对对列表进行排序 然后重新应用符号 但我对 R 很陌生 所以不知道如何执行此操作
  • R 条形图中的 X 轴

    我想问一个关于 barplot 轴的问题 首先请看我的数据 SerNo DOY Rain 1 350 0 2 351 0 3 352 0 4 353 0 5 354 0 6 355 0 7 356 0 8 357 0 9 358 0 10
  • 如何在R中逐行写入文件

    我正在尝试逐行读取 csv 文件 并且仅选择左侧的第二个和第三个单元格以及右侧的第三个单元格 例如 如果这一行中有 17 个单元格 我将选取第 15 个单元格 然后我想合并这 3 个单元格 用逗号分隔 然后将此行写入一个新的 csv 文件
  • R:在 Shiny 中,如何修复应用于“反应性”类对象的“xtable”没有适用的方法

    我收到此错误 Error in UseMethod xtable no applicable method for xtable applied to an object of class reactive UI R library shi
  • 带有嵌套分组变量的多行轴标签,用于 - R 中的堆积条形图

    我想使用 ggplot 制作一个包含多个类别的堆叠条形图 并带有嵌套的标记 X 轴 类似于我使用 Excel 制作的条形图 如此处所示 我尝试使用给出的例子here https stackoverflow com questions 181
  • 如何使用r中的dplyr在特定位置插入空白行

    我想在数据框中的特定位置插入空白行 我的数据框是这样的 dat lt data frame group c rep A 1 rep B 4 rep C 2 rep D 2 group 1 A 2 B 3 B 4 B 5 B 6 C 7 C
  • 使用亚毫秒日期时间从字符->POSIXct->字符准确转换

    我的文件中有一个字符日期时间列 我加载文件 到data table 并执行需要将列转换为的操作POSIXct 然后我需要写POSIXct值返回文件 但日期时间不会相同 因为打印不正确 这个打印 格式问题是众所周知的 并且已经被讨论过多次 我
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • 在 R Shiny 中显示/隐藏整个框元素

    我目前正在尝试找到一种方法来隐藏 显示 R Shiny 中的整个 box 元素 以及里面的所有内容 我想创建一个可能的按钮 它允许用户展开特定框 然后使用相同 甚至不同 的按钮隐藏它 我不想使用条件面板 因为我的应用程序非常大并且会产生一些
  • 如何将 mcmc.list 转换为 bugs 对象?

    我正在使用rjagsR 库 功能coda samples产生一个mcmc list 例如 来自example coda samples library rjags data LINE LINE recompile LINE out lt c
  • 使用 dplyr 的 select 引用变量名[重复]

    这个问题在这里已经有答案了 通常我会想要选择变量的子集 其中该子集是函数的结果 在这个简单的例子中 我首先获取与宽度特征相关的所有变量名称 library dplyr library magrittr data iris width var
  • 将 csv 文件上传到shinyApps.io

    我的应用程序在本地运行良好 并且我能够成功地将应用程序部署到shinyapps io 服务器 但是当我尝试使用shinyapps URL 在浏览器中加载应用程序时 收到以下错误消息 错误对象 数据 不是成立 我认为这是因为 data 变量从
  • 如何处理包内部的 R 数据?

    我正在开发的 R 包需要多个 R 数据对象 例如预先计算的模型和参数 目前 我将包的 数据 目录中的每个对象放在单独的 RData 文件中 使用该包时 用户可以使用 数据 功能将这些对象附加到他们的环境中 我想要的行为是 在加载包时 数据对
  • R - 如何为数据范围内的缺失值绘制条形图零点?

    假设我对 1 到 10 之间的整数的 200 个点有 10 个观察值 mysample sample rep seq 1 10 20 10 我想用条形图绘制它 barplot table mysample barplot https i s

随机推荐

  • Google Docs 中的自动增量文件名?

    如何为我的所有帐户向文档添加功能 当我打开新文档的文件时 它希望找到我现在所在的文件夹 最后一个文件名并递增 1 并保存 对于默认的 Google 文档 保存名为 无标题文档 的文档 但我希望它保存它 文件夹 1 1001 doc文件夹 1
  • 使用不带模板参数的 C++ 模板名称[重复]

    这个问题在这里已经有答案了 我一直在使用 const ObjArray 作为 ObjArray 模板的参数 没有考虑它 它似乎工作正常 但当我再次阅读它时 它看起来不太对劲 不应该是 const ObjArray
  • 找不到匹配的构造函数:org.gradle.api.internal.artifacts.ivyservice.ivyresolve.VersionInfo(java.lang.String)

    我正在开发一个 Android Studio 项目 今天当我打开它时突然发生了这种情况 Could not find matching constructor for org gradle api internal artifacts iv
  • UIManagedDocument + iCloud“大图”?

    我正在开发我的第一个 iCloud 应用程序 我浏览了 Apple 文档和斯坦福大学视频 但我仍然很难理解 iCloud 的 大局 我的目标是创建一个 图书馆风格 http developer apple com library ios r
  • Javascript 打开一个新的浏览器窗口(不是选项卡)并禁用地址栏

    是否可以在 javascript 的帮助下打开一个新的浏览器窗口 不是选项卡 另外我想禁用或隐藏地址栏 是的 您可以打开一个新的弹出窗口 并禁用地址栏 url 无法更改 HTML
  • C 结构体中的默认值

    我有一个这样的数据结构 struct foo int id int route int backup route int current route 以及一个名为 update 的函数 用于请求其中的更改 update 42 dont ca
  • 函数重载中的隐式转换序列

    我不明白编译器如何选择最佳候选者 例如 我们有以下代码 int function double int int int function int double double 如果第二个函数需要转换两个变量 而第一个函数只需要转换一个变量 为
  • Lync 数据库 - 移动用户与 PC 用户

    大家好 我正在寻找 Microsoft 如何区分 Lync 数据库中的移动和非移动订户 用户 不是 SDK 或 API 有人可以建议一个查看方向吗 Thanks 查看池配置存储中的表 rtcdyn 这是更详细地描述它的博客文章 如果我发现任
  • 无法在 m1 mac 上安装 jekyll (eventmachine)

    我是 iOS 开发的真正新手 想创建一个新的 GitHub 博客 我正在跟进如何在 Apple M1 Macbook 上安装 jekyll https www earthinversion com blogging how to insta
  • maven如何构建子项目?

    我有聚合 我使用以下链接链接父 Pom
  • 在 Swift 中执行 println 字典项时转义字典键双引号

    我一直在玩 Swift 刚刚遇到了一个问题 我有以下词典 var locations Dictionary
  • 如何在Python中使用datetime.tzinfo?

    我不知道如何使用datetime tzinfo模块 我必须将日期时间数据从 UTC 转换为本地时区 如果我检索 2 表示 gmt 2 如何将其转换为 tzinfo 对象 另外 是否可以从 UTC 转换为本地时区并自动应用夏令时 如何设置自动
  • 材料角度 4 的扩展面板

    我有一个 Angular 4 4 4 应用程序material 2 0 0 beta 12我想用mat expansion panel来自材料设计 这是我的代码
  • IE8 上的 JQuery 循环问题

    我在本页中途的 IE8 上的食物图像转换期间遇到 IE8 显示黑色背景的问题http bit ly mDcm2v http bit ly mDcm2v 另一个更小的问题是 链接悬停下划线出现在靠近文本的两个位置 仅在此浏览器上 有办法解决吗
  • 将工具栏添加到 FragmentActivity

    我正在延长FragmentActivity在一个作为我的基础活动的班级中 我的其他活动从中延伸出来 我的问题是 当我从基本活动扩展其他活动时 我失去了工具栏功能 如何将其添加到我的基本活动中 以便我的活动可以继承工具栏 有什么指点吗 您应该
  • StrutsTestCase 未找到 /WEB-INF/web.xml

    我在netbeans7 0下使用StrutsTestCase2 4与struts1 3运行testCase时 显示 Error initializing action servlet javax servlet UnavailableExc
  • 实例变量声明

    以下代码不打印任何内容 我期待着welcomeBack 请解释 class Hello instanceHello welcomeBack def printHello print instanceHello end Hello new p
  • 如何配置 WCF 服务作为普通 TCP 服务器工作?

    如何配置我的 WCF 服务作为普通 TCP 服务器工作 是否可以禁用所有特定于绑定的内容 以便保持您的服务 URL 像http example com 4444 service http example com 4444 service并能
  • Android FCM - 防火墙的 IP 和端口是什么?

    我们在受限环境中的服务器需要将通知推送到安装了我们的应用程序的设备 我们在开放环境中尝试了推送客户端 并且成功了 然而 当转移到我们的服务器时 由于防火墙阻塞 出现网络错误 根据谷歌文档 如果您的组织有防火墙限制流量或 从互联网上 您需要将
  • 将共享数据列中的多个值重新编码/替换为跨数据帧的单个值

    我希望我没有错过它 但我还没有找到解决这个问题的有效方法 我有一组带有共享列的数据框 这些列包含多个不同的转录错误 其中一些对于多个值是共享的 另一些则不是 我想用所有数据帧中的正确值 good values 替换 重新编码转录错误 bad