按因子列安全合并数据框

2024-03-03

因子可以帮助防止 R 中的某些编程错误:您无法对使用不同级别的因子执行相等检查,并且在对无序因子执行大于/小于检查时会收到警告。

a <- factor(letters[1:3])
b <- factor(letters[1:3], levels=letters[4:1])
a == b
## Error in Ops.factor(a, b) : level sets of factors are different
a < a
## [1] NA NA NA
## Warning message:
## In Ops.factor(a, a) : < not meaningful for factors

然而,与我的预期相反,合并数据帧时不会执行此检查:

ad <- data.frame(x=a, a=as.numeric(a))
bd <- data.frame(x=b, b=as.numeric(b))
merge(ad, bd)
##   x a b
## 1 a 1 4
## 2 b 2 3
## 3 c 3 2

这些因素似乎只是强加给角色的。

是否有“安全合并”可用于进行检查?您是否发现默认情况下不执行此检查的具体原因?

Example(现实生活中的用例):假设两个空间数据集具有非常相似但不相同的细分,例如公社。这些数据集所指的时间点略有不同,并且一些公社在该时间跨度内已经合并。每个数据集都有一个“公社 ID”列,甚至可能名称相同。虽然此列的语义非常相似,但我不想(意外地)合并此公社 ID 列上的数据集。相反,我在“旧”和“新”公社 ID 之间构建了一个匹配表。如果公社 ID 被编码为因子,则“安全合并”将为合并操作提供正确性检查,而无需额外(实现)成本和很少的计算成本。


“安全卫士”与merge is the by=范围。您可以准确设置您认为应该匹配的列。如果匹配两个因子列,R 将使用这些值的标签来匹配它们。因此,“a”将与“a”匹配,无论因子的隐藏内部工作如何编码这些值。这就是用户看到的内容,因此这就是合并的方式。就像数值一样,您可以选择合并具有完全不同范围的列(第一列有 1:10,第二列有 100:1000)。当。。。的时候by值设置后,R 将执行其要求的操作。如果你没有明确设置by参数,那么 R 将找到两个 data.frame 中的所有共享列名并使用它。

很多时候,合并时,您并不总是期望匹配。有时你正在使用all.x or all.y专门获取不匹配的记录。在这种情况下,根据不同 data.frame 的创建方式,人们可能不知道它没有的级别。所以尝试合并它们并不是没有道理的。

所以基本上 R 在合并过程中处理诸如字符之类的因素,因为它假设您已经知道两列属于在一起。

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

按因子列安全合并数据框 的相关文章

  • 如何按物种矩阵显示站点内植物物种生物量?

    我之前问过 如何将两列显示为二进制 存在 不存在 矩阵 这个问题得到了两个很好的答案 我现在想更进一步 在原始站点按物种列添加第三列 该列反映每个地块中每个物种的生物量 第 1 列 地块 指定约 200 个地块的代码 第 2 列 物种 指定
  • a * b * y 中的错误:不一致的数组[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 Cold lt matrix c 1 89 3 76 2 47 4 76 2 2 byrow TRUE X lt mat
  • 如果包已经加载,那么在函数中需要包会有什么影响?

    加入有没有什么不良影响library require函数内的语句会被频繁调用吗 所用的时间似乎可以忽略不计 但我每隔几分钟调用该函数 我想知道重复是否有任何缺点require calls 请注意 该功能只是个人实用程序 不被共享 即 我是唯
  • 绘制由 R 中的 caret 包训练的 SVM 线性模型

    Purpose 我试图通过可视化 SVM 线性分类模型plot 我正在使用中提供的示例代码和数据kernlab包注意到了caret实际上通过训练 svmksvm函数 参考这里的src代码 https github com topepo ca
  • 提取数据框中值前后的 n 行

    我有一个数据框 其中包含某些值Mark柱子 我想提取n标记出现之前和之后的值 包括带有标记的行 我通过使用找到我需要的值indices lt which df Mark 1 where 1是我正在寻找的价值 现在我需要例如之前 5 行和之后
  • 渲染函数的反应性参数

    我在 Flexdashboard 中有一个表 其列数可以更改 我可以动态计算列的对齐方式 默认对齐方式 23 45作为字符向量 因此左对齐该值 尽管它是一个数字并且应该右对齐 问题是我无法将此对齐传递回renderTable作为一个值ali
  • 如何更改 ggplot2 中轴标签上的小数位数?

    具体来说 这是在facet grid 中 在谷歌上广泛搜索了类似的问题 但不清楚语法或它的去向 我想要的是 y 轴上的每个数字在小数点后都有两位数 即使尾随一位是 0 这是scale y continuous 或 element text
  • 如何使用 R markdown 和 bookdown 将图形列表和表格列表添加到目录中

    我有一份报告 pdf 输出 我想在附录中添加参考书目 图表列表和表格列表 我希望这三个元素出现在目录中 我添加参考书目通过增加bibliography bibliography bib到我的 yaml 标头 我直接用 LaTex 添加的图形
  • 如何识别数据集中其他列之和的列

    我想编写一个函数 最好用 R 语言 但也欢迎其他语言 它可以识别数据集中列之间的关系 仅限于加法 减法 其实际应用是在大型多列财务数据集上运行它 其中某些列是其他列的小计 并识别此类小计 理想情况下 我希望允许一些小的差异 例如允许舍入问题
  • 如何将管道链 (magrittr) 的结果提供给对象

    这是一个相当简单的问题 但我无法通过 google stackexchange 找到答案并查看 magrittr 的文档 如何提供通过 gt 连接的函数链的结果来创建向量 我看到大多数人做的是 a lt data frame x c 1 3
  • 如何在Shiny中默认选择verbatimTextOutput中的文本?

    这是与我之前的问题相关的问题 是否可以有固定宽度的 verbatimTextOutput 并让文本在 Shiny 中换行 https stackoverflow com q 58516071 7669809 我有以下闪亮的应用程序 http
  • 在 R 中提取模式/分隔符之间的字符串

    我的变量名称格式如下 PP Sample 12 GT or PP Sample 17 GT 我正在尝试使用字符串拆分来 grep 出中间部分 即Sample 12 or Sample 17 但是 当我这样做时 IDtmp lt sapply
  • 在 R 中将列表列表转换为数据帧:Tidyverse 方式

    我正在寻找将列表列表转换为 R 中的数据帧的 Tidyverse 方法 Create a list of lists a lt seq 1 10 1 b lt seq 1 20 2 Function to calculate the sum
  • R:data.table 与 merge(aggregate()) 性能

    或者更一般地说 它是DT SD by versus merge aggregate 话不多说 这里是数据和示例 set seed 5141 size 1e6 df lt data table a rnorm size b paste0 sa
  • R Markdown / Bookdown 中的水平规则导致错误

    突然 我在 Markdown Bookdown 中编织为 PDF 时遇到错误 我的系统没有任何变化 该错误是由 水平规则 引起的 即 Markdown 中的任意位置 或 尽管两侧都有行空格 我提供了一个简单的违规示例 它不会合并成 PDF
  • 在 Ubuntu 上安装软件包需要很长时间

    我之前使用 Windows 作为操作系统 RStudio 用于 Windows 今天切换到 Ubuntu 并再次安装了 R 和 RStudio 当我尝试从 CRAN 安装一些软件包时 仅tidyverse 使用install package
  • dplyr 标准评估:summarise_ 以及求和变量的变量名称

    我遇到了很多与我的问题类似的问题 但只解决了我问题的一部分 我使用带有标准评估的 dplyr 来容纳变量名称 这对于管道中的 filter 和 group by 效果很好 但是 为了总结 我无法为我正在求和的指标提供变量名称 一个例子就可以
  • R 控制台是我的母语,如何将 R 设置为英语?

    我在 Windows 7 上使用 R 显然 R 不知何故发现了我说英语以外的语言的证据 并且顽固地坚持在控制台中以我自己的语言提供输出 由于多种原因 这是不可取的 我希望 R 是英语 什么有效 我能够使用LANGUAGE en作为 R 控制
  • 将 data.frame 的列中的值替换为另一个 data.frame 中的值

    我的情况是 我有一个数据框 其中有一列填充了整数 1 到 6 我想用更具描述性的标签替换这些整数 这些标签在另一个充当 键 的数据框中提供 V1 V2 1 1 LABEL1 2 2 LABEL2 3 3 LABEL3 4 4 LABEL4
  • 反转默认比例梯度ggplot2

    我是新手 我正在尝试设计热图 这是我的代码 ggplot gd aes Qcountry Q6 1 Q6d order TRUE geom tile aes fill prob colour white theme minimal labs

随机推荐

  • 谷歌地图 android 在集群项目上单击不起作用

    在我的谷歌地图片段中 我用它来将我的项目添加为集群 mClusterManager new ClusterManager
  • 在 XSLT 转换期间在输出文档中的特定点插入元素

    我想知道您是否可以在处理过程中访问结果文档 我问的原因是我正在转换输入文档 并希望根据某些条件插入元素 但这必须在我遍历树并且我即将创建它时发生 转换后的 xml 看起来与此类似
  • MySQL 中的 Varbinary 与 Blob

    我有大约 2k 的原始二进制数据需要存储在表中 但不知道是否选择 Varbinary 或 Blob 类型 我已经阅读了 MySQL 文档中的描述 但没有找到任何合同和比较描述 我还读到 varbinary 仅支持最多 255 个字符 但我成
  • 如何在perl系统函数中同时使用管道并防止shell扩展?

    如果将多个参数传递给 perl 的系统函数 则 shell 扩展将不起作用 COMMAND perl e my s system echo s RESULT 如果该命令作为一个参数传递 则扩展将起作用 COMMAND perl e my s
  • Bootstrap Modal 未出现 - jinja2

    我是问类似问题的第一千个人 所以我确信这很简单 第一次在 Chrome 中使用 boostrap jinja 简单地说 按钮在那里 但点击它没有任何作用 数据全部从 Jinja 填充 并且 jinja 正确渲染 for 循环 在目标调用和
  • distribution、distutils、setuptools 和 distutils2 之间的区别?

    情况 我正在尝试将开源库移植到 Python 3 SymPy http sympy org 如果有人想知道的话 所以 我需要跑2to3在为 Python 3 构建时自动进行 为此 我需要使用distribute 因此 我需要移植当前系统 根
  • 如何在 ReactJS 的功能组件中声明变量

    我有一个变量 myVar 不是状态 const myComponent gt const myState setMyState useState true const myVar false return
  • 如何使引导轮播图像响应?

    我想保持图像的相同比例 问题是当浏览器很宽时它会拉伸 并在减少时挤压 我在这里检查了所有问题 但大多数问题都没有帮助我 这里是markup div class carousel slide ol class carousel indicat
  • 为什么我的简单严格 XHTML 文件在包含 jquery 时会出错?

    我正在尝试制作一个包含 jquery 的简单严格的 HTML 文件
  • 使用 Qt Quick 创建可扩展的光泽按钮

    我想使用 Qt Quick 创建下面的光泽按钮 最好使用纯 QML 无 C 它需要可扩展 所以我不能使用PNG等 到目前为止我的代码 import QtQuick 2 3 import QtQuick Controls 1 2 import
  • 如何在 tmux 中使用 Ctrl-分号作为前缀?

    我想使用 Ctrl 分号作为 tmux 的前缀 但我的conf不起作用 unbind key C b set option g prefix C 我发现了一篇类似的文章 但这不是前缀 tmux 绑定分号 https stackoverflo
  • 使用 Automapper 忽略子类映射中的基类属性的问题

    我有一个场景 我想忽略基类中定义的类的某些属性 我有一个像这样的初始映射 Mapper CreateMap
  • C++:((A*)nullptr)->foo();合法吗?

    在深入研究 MFC 时 我发现了这段代码 AFXWIN INLINE HWND CWnd GetSafeHwnd const return this NULL NULL m hWnd 好像是这样使用的 CWnd pWnd nullptr p
  • 向左旋转 verilog 大小写

    我的任务是用verilog编写一个16位ALU 当我做需要旋转操作数和进行2的补码加法和减法的部分时 我发现了困难 我知道如何用纸和铅笔解决这个问题 但我无法弄清楚如何在 Verilog 中做到这一点 例如 A表示为a15 a14 a13
  • 字符串和标签本地化和全球化的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是一个拥有 20 多名开发人员的团队的成员 每个开发人员都在一个单独的模块上工作 大约 10 个模块 在每个模块中 我们可能至少有 50 个
  • 如何安装依赖于另一个“目标项目”包的包?

    我在设置 yeoman 时遇到问题 当我尝试安装某些软件包 yeoman compass 时 我不断收到此错误 同时 其他软件包安装良好 git python 外部包不能依赖于目标项目的包 我不确定失败在哪里 但是 nuget 有一个长期存
  • 测试本地时清单中的代码库属性不匹配

    根据 Java 1 7u25 你应该添加Codebase归因于你的清单 我已经做到了 但现在我无法在本地测试它 因为属性值与我的本地 JNLP 由 Netbeans 生成 不匹配 它没有代码库值 清单的代码库应该有什么价值和 或我的 jnl
  • 反应式香蕉节流事件

    我想在reactive banana 中实现某种类型的事件限制 它应该工作 以便如果距最后一个事件通过的时间少于 delta 秒 则不会让事件通过 如果不让其通过 则会存储该事件 并在距离上次触发事件 delta 秒后触发 下面是一个为时间
  • 需要一种算法来像素化 n 维超球面

    我想将向量放入 n 维空间中 这可以通过对 n 维超球面的表面进行像素化来完成 有谁知道用 C 语言对超球面进行像素化有什么好的算法吗 我想要恒定的垃圾箱大小 我的空间仅由正整数组成 您需要您的垃圾箱完全规则吗 如果不是 则随机抛出点 并测
  • 按因子列安全合并数据框

    因子可以帮助防止 R 中的某些编程错误 您无法对使用不同级别的因子执行相等检查 并且在对无序因子执行大于 小于检查时会收到警告 a lt factor letters 1 3 b lt factor letters 1 3 levels l