将列值与 NA 进行比较

2024-03-05

下面的输入表的数据点是NA。我明白在R当一个值与NA它导致输出是NA.

还有办法让我仍然可以使用进行比较ifelse()并确保所比较的值之一是否是NA那么它仍然会提供输出,就像NA是否正在比较字符/字符串?

输入原始数据

data <- read.table(header = TRUE, text = "A B
                    NA  TEST
                   TEST TEST
                   Abaxasdas Test")

输入数据表

 A       B
<NA>   TEST
TEST   TEST
Abaxasdas Test

Code

data$Output <- ifelse(as.character(data$A) == as.character(data$B), "YES", "NO")

Output

 A    B   Output
<NA> TEST  <NA>
TEST TEST  YES
Abaxasdas Test NO

预期输出

 A    B   Output
<NA> TEST  NO
TEST TEST  YES
Abaxasdas Test NO

为了简化事情,让我们首先重新定义数据框stringsAsFactors=FALSE:

df <- read.table(header = TRUE, text = "A B
                     NA  TEST
                    TEST TEST
                    Abaxasdas Test", stringsAsFactors=FALSE)

您可以比较中的列NA-安全使用方式identical:

mapply(identical, df$A, df$B)

要获得输出“YES”和“NO”而不是TRUE and FALSE:

ifelse(mapply(identical, df$A, df$B), "YES", "NO")

Output

> df$Output <- ifelse(mapply(identical, df$A, df$B), "YES", "NO")
> df
          A    B Output
1      <NA> TEST     NO
2      TEST TEST    YES
3 Abaxasdas Test     NO

替代

正如 joran 在评论中建议的那样,用值替换 NA 将使比较更容易。如果您不想更改数据框中的值(但也许您应该!),您可以使用如下辅助函数:

rna <- function(x) replace(x, is.na(x), "")
ifelse(rna(df$A)==rna(df$B), "YES", "NO")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将列值与 NA 进行比较 的相关文章

  • 如何编写固定宽度的文件?

    我应该编写一个基于固定宽度列的特定格式的 txt 文件 例如 第 1 8 列中的第一个变量 第 9 15 列中的第二个变量 原始数据有不同的长度 它们必须放在指定列的右侧 例如 值 15 96 和 12 489 必须写入第一行和第二行的第1
  • R 子集 XTS 工作日

    如何对 xts 对象进行子集化以仅包含工作日 周一至周五 周六和周日除外 这就是我要做的 library xts data sample matrix sample xts lt as xts sample matrix descr my
  • 如何访问pandas数据框中的多级索引?

    我想用相同的索引来调用这些行 这是示例数据框 arrays np array bar bar baz baz foo foo qux qux np array one two one two one two one two df pd Da
  • 关于在 LyX 中生成和交叉引用 knitr 图的意见

    我的目标是在 LyX 中包含一个knitr图 我可以在我的文档中交叉引用 我 插入了浮动图像 添加了标题和标签 在浮动图像中插入了 ERT 而不是图像 我所做的图片如下 我在这里检查过类似的问题 但没有人做我所做的事情 所以我在这里问 有没
  • k折交叉验证 - 如何自动获得预测?

    这可能是一个愚蠢的问题 但我只是找不到一个包来做到这一点 我知道我可以编写一些代码来获得我想要的东西 但如果有一个函数可以自动完成它那就太好了 所以基本上我想对 glm 模型进行 k 倍交叉验证 我想自动获取每个验证集的预测和实际值 因此
  • 按新年拆分日期行

    我有来自一家医院的包含许多变量的数据 以及每行的起始日期和截止日期 这告诉我们每行何时 有效 每行的有效期最长为一年 test data frame ID c 10 10 10 12 12 Disease c P P P D P Pass
  • R 中 optim() 的优化(L-BFGS-B 需要“fn”的有限值)

    我在 R 中使用 optim 来求解涉及积分的可能性时遇到一些问题 我收到一条错误消息 optim par c 0 1 0 1 LLL method L BFGS B lower c 0 L BFGS B 需要 fn 的有限值 中的错误 下
  • “x[] <- as.integer(x)”是什么意思

    当我阅读 R 手册时 我遇到了如下代码行 从 R 手册中的 colSums 复制 x lt cbind x1 3 x2 c 4 1 2 5 dimnames x 1 lt letters 1 8 x lt as integer x 有人能告
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • 消除垂直线ggplot

    这个问题以前曾被问过 但答案并不总是明确或很复杂 我希望 ggplot2 的新版本能够带来更简单的解决方案 如何仅消除 ggplot 的垂直线而不消除轴刻度线或标签 这对于条形图来说确实很好 因为它可以消除图形中一些不必要的干扰 这里有一些
  • 更快地评估从右到左的矩阵乘法

    我注意到以二次形式评估矩阵运算右到左明显快于左到右在 R 中 取决于括号的放置方式 显然它们都执行相同的计算量 我想知道为什么会这样 这与内存分配有什么关系吗 A 5000 5000 B 5000 2 A matrix runif 5000
  • R中的for循环和if函数

    我正在用 R 中的 if 函数编写一个循环 表格如下 ID category 1 a 1 b 1 c 2 a 2 b 3 a 3 b 4 a 5 a 我想使用 for 循环和 if 函数添加另一列来计算每个分组的 ID 如下所示的计数列 I
  • 时间序列,将月度数据改为季度

    现在我有一些每月数据 例如 1 1 90 620 2 1 90 591 3 1 90 574 4 1 90 542 5 1 90 534 6 1 90 545 etc 如果我使用 ts 函数 很容易将数据转换为时间序列结构 例如 Jan F
  • R 单个变量中的多重图

    嗨 我有下一个代码 par mfrow c 1 3 plot BCxyz 1 BCxyz 2 main Bray Curtis 1 2 pch 20 cex 3 col c blue green red yellow Metadata Sa
  • ggplot2错误:美学必须是长度一,或者与数据长度相同问题:颜色、字母

    我收到此错误 错误 美学必须是长度一 或者与数据长度相同问题 颜色 字母 当我将 ggplot 与数据框一起使用时Z如图所示 Z lt data frame Name c A G C T T T AG AG GC GC CT CT AT A
  • 查询文本指定 use_legacy_sql:false,而 API 选项指定:true

    我将 standardSQL 与 bigrquery 一起使用 library bigrquery project lt sql lt standardSQL SELECT result lt query exec sql project
  • 使用 ggplot2 和 geom_area 堆叠负/正时间序列

    我正在尝试重现一个堆积的时间序列图 该图显示银行资产负债表的构成和规模如何随时间变化 它应该看起来像这样 资产位于 x 轴上方 负债位于 x 轴下方 到目前为止 我已经能够使用以下方法成功重现图表的每一半ggplot plot assets
  • 如何使用字符对象使用 dplyr 重命名列[重复]

    这个问题在这里已经有答案了 我想通过使用变量以动态方式使用 dplyr 重命名列 但是 它只是为列命名变量的名称 而不是其内容 有任何想法吗 colnames y 1 time channel 1 channel 2 channel 3 c
  • python pandas如何在多个条件下过滤字符串

    我有以下数据框 import pandas as pd data 5Star FiveStar five star fiv estar data pd DataFrame data columns columnName 当我尝试用一 种条件
  • 如何使用 gvisMotionChart 处理 POSIXlt 格式时间?

    The googleVisR软件包出奇的好 然而 我对一个问题感到困惑gvisMotionChart关于 timevar 因为我的数据集中的时间是POSIXlt格式 例如 2009 07 02 19 00 00 2009 07 02 20

随机推荐

  • Ruby 在哪里跟踪其打开的文件描述符?

    这个问题是什么Not About 这个问题是not关于如何使用 File close 或 File open 块语法自动关闭文件 这是一个关于 Ruby 在运行时将打开的文件描述符列表存储在哪里的问题 实际问题 如果您有一个具有打开描述符的
  • Typeahead.js 在 Knockout 3 foreach 绑定中不起作用

    我将一个 Web 应用程序更新为 Bootstrap 3 和 Knockout 3 因此丢失了 Bootstrap 2 中的内置 typeahead 我添加了 typeahead js 它工作得很好 除非我在 Knockout foreac
  • 如何在C#中快速将二维数组转换为一维数组?

    我有一个多维的double 数组 其大小为 1 N 假设 N 已知 将其转换为一维的最快方法是什么double 长度为 N 的数组 我是 C 新手 我用它与 Matlab 函数交互 我使用的 Matlab 函数返回一个一维行向量 在 C 中
  • 如何确定 DICOM 系列是 3D 体积还是一系列图像?

    我们正在为 dicom 文件编写一个导入器 人们通常如何确定一系列图像形成 3D 体积还是只是一系列 2D 图像 对于大多数供应商来说 是否有通用的方法来决定这一点 我查看了 DICOM 标签 但找不到明显的解决方案 DICOM 标准定义了
  • 如何捕获Tomcat启动日志

    如何捕获Tomcat启动日志 要在Windows中启动Tomcat 可以执行命令 卡塔琳娜运行 在你的 tomcat bin 文件夹中 Tomcat 启动的输出将保留在当前窗口中 以便您可以对其进行分析
  • ValidationResult.MemberNames 属性是否会包含多个值?

    我用反射器搜索 但没有找到一个案例ValidationResult MemberNames http msdn microsoft com en us library system componentmodel dataannotation
  • VBA Excel 中的范围查找

    我正在尝试使用以下指令在 Excel 工作表中执行 查找 Set Found Columns 2 Find What value to find After ActiveCell LookIn xlFormulas LookAt xlPar
  • 有关 IsNullOrWhiteSpace() 的快速提示中的“字符串”与“字符串”

    在 Visual Studio 2015 中工作 我对以下效果进行了条件检查 if String IsNullOrWhiteSpace stringToTest 我看到了一个 IDE001快速提示或行动 https msdn microso
  • 与分布式源代码控制的持续集成

    我想我误解了一些东西 但无法找到到底是什么 我用谷歌搜索 但没有明白这个想法 有两种流行的技术 持续集成和分布式源代码控制 人们以某种 方式将它们结合起来 但我不明白如何结合 AFAIK 持续集成意味着在本地测试代码后立即提交到中央存储库
  • 如何使 WPF 滑块拇指从任意点跟随光标

    我有这样的滑块
  • Google Spreadsheet API 插入图像

    有没有办法通过谷歌电子表格API插入图像 我查看了文档 但除了插入 更新 删除行之外 没有提及与工作表相关的其他数据 例如图像 例如 在 Excel 上 图像附加到工作表而不是任何特定单元格 因此 您必须从工作表中插入删除图像 然后将其放置
  • 如何在 Ubuntu Web 服务器上为 Dart 安装 pub(命令行使用)

    我已按照说明进行操作 在 Linux 选项卡下 将 Dart 安装到 Ubuntu Web 服务器上 Dart 本身工作正常 但我无法使用 Pub 命令 仅限 Dart 命令 如何为服务器安装 Pub 以下是使用 Aptitude apt
  • Google Assistant Dialogflow API V2 webhook ETag 错误

    我正在尝试返回简单的文本响应并使用以下代码在 Google Assistant 应用程序中显示基本卡片 public GoogleCloudDialogflowV2WebhookResponse Search GoogleCloudDial
  • Hadoop 块大小 vs 分割 vs 块大小

    我对 Hadoop 的概念有点困惑 有什么区别Hadoop Chunk size Split size and Block size 提前致谢 块大小和块大小是一样的 分体尺寸可能不同于块 块 size 地图缩减算法不适用于文件的物理块 它
  • 获取当月第一天的最有效方法是什么?

    使用 ruby 我尝试将日期格式化为 2009 10 01 我采用当前日期 2009 10 26 然后将日期更改为 01 我知道有多种方法可以做到这一点 但很好奇从代码角度来看 实现这一目标的最短方法是什么 如果您不介意在应用程序中包含 A
  • 如何使用鼠标滚轮在 WPF 中水平滚动?

    如何使 WPF 能够响应使用鼠标滚轮的水平滚动 例如 我有一个 Microsoft Explorer 迷你鼠标 并尝试使用以下命令水平滚动 ScrollViewer 中包含的内容 HorizontalScrollBarVisibility
  • 使 jQuery 的 .prev().prev().prev().find("selector") 调用更容易

    我怎样才能避免 prev prev prev 打电话 这有捷径吗 您可以使用 prevAll 结合eq or eq since prevAll以相反顺序返回一组元素 从最接近当前元素的元素开始 0 相当于 prev prev prev 将会
  • ODBC 源的版本与此版本的数据流不兼容

    我有一个 SSIS 包 我使用批处理文件通过 DTEXec 运行它 它看起来像这样 cd C Program Files x86 SonicWALL SSL VPN NetExtender NECLI connect s test co u
  • 反序列化复杂对象中的 xml

    我不明白为什么对象为空 WebClient browse new WebClient StreamReader res new StreamReader browse OpenRead http ws audioscrobbler com
  • 将列值与 NA 进行比较

    下面的输入表的数据点是NA 我明白在R当一个值与NA它导致输出是NA 还有办法让我仍然可以使用进行比较ifelse 并确保所比较的值之一是否是NA那么它仍然会提供输出 就像NA是否正在比较字符 字符串 输入原始数据 data lt read