结合使用 `mutate_at` 和 `na_if` 仅将某些列的零替换为 NA

2024-04-19

我的数据采用以下格式:

library(tidyverse)
df <- mtcars
df <- df %>% mutate(vs_doubled = vs * 2) %>% select(mpg, cyl, vs, am, vs_doubled)

head(df)


#>    mpg cyl vs am vs_doubled
#> 1 21.0   6  0  1          0
#> 2 21.0   6  0  1          0
#> 3 22.8   4  1  1          2
#> 4 21.4   6  1  0          2
#> 5 18.7   8  0  0          0
#> 6 18.1   6  1  0          2

我正在尝试使用mutate_at and na_if将 0 值设置为 NA——但仅限于特定列(“vs”和“am”)。我想将“vs_doubled”列保留为零。

我不太明白,因为下面的行不起作用:

df <- df %>% mutate_at(.vars = c("vs", "am"), .funs = na_if(y = 0))

Update

From dplyr1.0.0我们可以使用across :

library(dplyr)
df %>% mutate(across(c(vs,am), na_if, 0)) %>% head

#   mpg cyl vs am vs_doubled
#1 21.0   6 NA  1          0
#2 21.0   6 NA  1          0
#3 22.8   4  1  1          2
#4 21.4   6  1 NA          2
#5 18.7   8 NA NA          0
#6 18.1   6  1 NA          2

原答案

在之前的版本中dplyr我们可以用mutate_at :

df %>%  mutate_at(vars(vs,am), ~na_if(.,0)) %>% head

或者另一种方式是

df %>% mutate_at(vars(vs,am), na_if, 0)

~是 purrr 风格的公式语法,而.代表列的值。它是匿名函数调用的替代方案,您可以将上述函数编写为

df %>%  mutate_at(vars(vs,am), function(x) na_if(x, 0)) 

另外所示的替代方式不需要~我们可以直接传递带有附加参数的函数(这里为 0y).


当然,还有其他方法可以在不使用的情况下做到这一点na_if

df %>% mutate_at(vars(vs, am), ~replace(., . == 0, NA)) 

或与基础 R 相同

cols <- c("vs", "am")
df[cols] <- lapply(df[cols], function(x) replace(x, x == 0, NA))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结合使用 `mutate_at` 和 `na_if` 仅将某些列的零替换为 NA 的相关文章

  • ggplot2 每个方面的不同因子顺序

    我正在尝试创建一个克利夫兰点图 在本例中为 J 和 K 给出两个类别 问题是元素 A B C 都在这两个类别中 所以 R 一直放屁 我做了一个简单的例子 x lt c LETTERS 1 10 LETTERS 1 3 LETTERS 11
  • 在 R 中将多个回归表输出到 Word 文档的多个页面中

    我的目标是创建一个多页 Microsoft Word 文档 在连续页面上包含许多格式化回归表输出 理想情况下 这可以使用 R Markdown 来完成 我很幸运地使用Word在Word中制作了格式良好的回归表sjPlot tab model
  • 使用 KnitR 在 R 中以编程方式创建 Markdown 表

    我刚刚开始了解 KnitR 以及使用 Markdown 生成 R 文档和报告 这对于我与工作有关的许多日常报告来说似乎是完美的 然而 我没有看到的一件事是使用 Markdown 格式打印数据框和表格的简单方法 有点像xtable 但使用 M
  • 使用ggmap在地图上绘制等高线

    我有洛杉矶港地区的颗粒物浓度差异 之后 之前 我正在尝试使用 ggmap 在地图上绘制浓度等值线 但结果看起来很不同 我使用的代码如下所示 数据位于代码下方 Code 安装 packages ggmap library ggmap PM r
  • 在 R 中从一条线偏移绘制一条平行线

    我有代表沿着一些街道行驶的线串 但我实际上想代表骑自行车者的旅程 它偏离线路 即他们在路边附近行驶 我正在努力思考如何去做 我制作了一段可重现的 R 代码来进行说明 Let s say I have a route along some s
  • R:将多列转换为单列[重复]

    这个问题在这里已经有答案了 我有一个看起来像这样的数据框 ID week1 t week1 a week2 t week2 a 1 12 22 17 4 1 15 32 18 5 1 24 12 29 6 2 45 11
  • 如何在 R 中按字符变量的字母顺序对数据框进行排序?

    我想按 R 中字符变量的字母顺序对数据框进行排序 我尝试使用order 函数 但它将我的数据框转换为列表 有人知道吗 好吧 我这里没有问题 df lt data frame v 1 5 x sample LETTERS 1 5 5 df v
  • 拆分数字 yyyymmdd 列

    我有一个包含 DATE 列的数据框 我将其引用为 NM DATA DATE 它是一个 yyyymmdd 形式的数字 我知道 有一百个线程 我尝试了所有能找到的解决方案 但它们对我不起作用 即将重新加载 RStudio NM DATA DAT
  • 如何从数据框列表中提取某些列

    我有一个数据框列表 l 这些数据框本身就是二维矩阵 对于我的工作 我需要创建另一个列表 其中的数据帧是原始列表中数据帧的子集 例如 列表l1有两个数据帧D1和D2 分别有10和12个不同的数据列 现在我想创建一个新列表 l2 它也有两个数据
  • dplyr:在 group_by 组中添加行

    有没有更好的方法来添加行group by 组比使用bind rows 这是一个有点笨拙的例子 df lt data frame a c 1 1 1 2 2 b 1 5 df gt group by a gt do bind rows dat
  • 使用 rollend 滚动 data.table

    我无法获取roll Inf定义时工作rollends FALSE When rollends未设置或设置为TRUE 我看到了预期的结果 我将不胜感激任何建议 library data table dt1 data table Date se
  • 如何在data.table中编写累积计算

    顺序累积计算 我需要进行时间序列计算 其中每行计算的值取决于上一行计算的结果 我希望能够利用data table 实际问题是水文模型 累积水平衡计算 在每个时间步长增加降雨量 并减去径流和蒸发作为当前水量的函数 该数据集包括不同的流域和场景
  • 如何在 R 中手动编写正态分布核的似然值?

    具体来说 如何编码 x 和 mu 之差的乘积 精度矩阵以及 x 和 mu 之差的转置 我下面的代码正确吗 提前致谢 colSums dat mu mat solve sigma colSums dat mu mat 其中 mu mat 是重
  • R 笔记本:opts_chunk 没有效果

    我正在开发我的第一台 R 笔记本 除了一个问题之外 它运行得很好 我想成为我内联输出的数字 r realbignumber 以逗号作为分隔符且最多 2 位小数 123 456 789 12 为了实现这一目标 我在文档的开头添加了一个块 其中
  • 将 R 包函数导出到 R 包内的并行集群

    有一些功能 比如function1 在我正在开发的 R 包中 它依赖于辅助函数 例如h function1 and h function2 在我的包裹里 我正在并行化重复调用function1在我的包中的另一个函数中 目前 在我的包中我正在
  • 尝试将 XLSX 数据导入 R 时出现 IllegalArgumentException

    在将 xlsx 文件导入 R 时 我遇到了以下错误 mydata lt read xlsx C Users aniruddha Downloads failingExample xlsx 1 Error in jcall row ir Lo
  • 确定执行脚本的路径

    我有一个名为foo R其中包括另一个脚本other R 位于同一目录中 usr bin env Rscript message Hello source other R 但我想要R找到那个other R无论当前工作目录是什么 换句话说 fo
  • 在 R 闪亮应用程序中评级星星

    我正在尝试向我闪亮的应用程序添加一些元素 以使其看起来更好 因此 我正在使用新的shiny semantic包允许以简单的方式添加语义 UI 元素 人们可以在这里找到闪亮的语义元素的示例 http demo appsilondatascie
  • ANEW 字典可以用于 Quanteda 中的情感分析吗?

    我正在尝试找到一种方法来实施英语单词情感规范 荷兰语 以便使用 Quanteda 进行纵向情感分析 我最终想要的是每年的 平均情绪 以显示任何纵向趋势 在数据集中 所有单词均由 64 名编码员按照 7 分李克特量表在四个类别上进行评分 这提
  • R 中的网页抓取表

    完全菜鸟试图抓取此页面上的表格 我所能做的最远的是加载 rvest 包 我的问题是 我找不到合适的元素 我通过检查器尝试的元素是 table w782 comm lsjz 但它返回长度为0的列表 并在 html table 之后执行 gt

随机推荐

  • 在 JavaScript 中使用 CSS calc() 和变量

    用户 NickC 询问here https stackoverflow com questions 40871127 can i use css calc withing javascript是否可以使用 CSS 的 calc 函数在 js
  • 为什么 Python 的 datetime.strftime('%w') 和 datetime.weekday() 对星期几使用不同的索引?

    在 Python 中 使用整数将星期几显示为datetime strftime 显示与使用不同的结果datetime weekday gt gt gt import datetime gt gt gt now datetime dateti
  • 多线程 - 在数组中我应该保护什么?

    我正在编写一些具有全局数组的代码 该数组可以由两个线程访问以进行读写目的 读取或写入一系列索引时不会进行批处理 因此我试图弄清楚是否应该锁定整个数组或仅锁定我当前正在使用的数组索引 最简单的解决方案是将数组视为 CS 并在其周围放置一个大锁
  • 异步获取多个json文件后触发回调

    我有来自旧论坛的 3 个 JSON 文件 其中包含 成员 主题和回复 现在我想通过 javascript jquery 获取 3 个 json 文件来将其呈现在网站上 我可以通过首先获取成员 返回时获取主题以及返回时获取回复来同步完成此操作
  • 使用 PHP 进行安全 FTP 连接

    我有一个带有登录详细信息的安全 FTP 服务器 我正在尝试使用 PHP 连接到该安全 FTP 服务器ftp ssl connect ftp connect and ftp login函数并将所有参数正确传递给该函数 但我惊讶地发现它没有连接
  • 无法在当前状态下启动设备:正在创建

    我在 iOS 8 模拟器的 Xcode 6 中运行应用程序时遇到错误 该错误指出 无法在当前状态下启动设备 正在创建 我尝试重置模拟器的内容 另外 我在安装 Xcode 6 后重新启动了 mac 可能需要修复什么 当我将 Xcode 应用程
  • 没有安排分支的构建

    我刚刚从詹金斯开始 我正在尝试在分支 主控上运行构建 我得到的只是没有安排分支的构建 master 这是日志 Started by timer Sun Mar 05 18 23 43 NPT 2017 Starting branch ind
  • Python Reportlab 中的动态帧大小

    我尝试生成一个发货清单报告实验室 questions tagged reportlab在Python中 我试图使用 Platypus 将所有部分 如发件人地址 收件人地址 表格 放在适当的位置Frames 第一个问题我遇到的问题是我需要很多
  • UICollectionView:不同大小的项目不会在重复使用的项目上计算

    我有一个包含不同项目大小的集合视图 我在其中声明 CGSize collectionView UICollectionView collectionView layout UICollectionViewLayout collectionV
  • 在 Perl 中使用引用指向滑动窗口数组

    这是我的问题 我有 2 个数组 一种是字符数组 代表滑动窗口 角色从开头移动并推到结尾 我想使用第二个数组来存储对数组切片的引用 这些数组切片 跟随 字符移动 例子 my char array h e l l o w o r l d my
  • 表达式树不能包含赋值运算符?

    如何增加 linq 语句中的索引值 int headIndex 1 int itemIndex 1 lst from xx in db vwCustomizationHeaders where xx ProductID pID select
  • Amazon CloudFront 与 S3 --> 按域限制访问?

    在 Amazon S3 上 您可以按域限制对存储桶的访问 但据我从一位有用的 StackOverflow 用户那里了解到 您无法在 CloudFront 上执行此操作 但为什么 如果我是正确的 CloudFront 只允许基于时间的限制或
  • 使用d3.js实现元素的过渡效果

    我正在将一个元素从一个点移动到另一个点 但具体来说我想实现这个动画 http carto net svg samples path animation svg http carto net svg samples path animatio
  • Android WorkManager Worker 无法使用 Dagger Hilt `@WorkerInject` 注入

    我正在尝试遵循以下指南https developer android com training dependency injection hilt jetpack workmanager https developer android co
  • 在 Sybase ASE 中更新插入(更新或插入)?

    我正在编写一个应用程序 将数据从 Oracle 移动到 Sybase 并且需要执行更新 插入操作 在 Oracle 中 我会使用 MERGE INTO 但它似乎在 Sybase 中不可用 无论如何 在 ASE 中也不可用 我知道这可以通过多
  • 为什么 ASP.NET Dynamic 控件即使添加到 Page_Load 中也能保留 ViewState?

    我做了一些与动态控件和 ViewState 相关的研究 我读到 为了保留动态控件的 ViewState 您必须将其添加到 Page Init 事件中 这是有道理的 因为 PageLifeCycle 是 初始化 加载视图状态 加载回发数据 L
  • dynamoDB 如何存储数据?

    由于Dynamodb以键值对的形式存储数据 其中键是主键的类型 值是与其关联的数据 我想知道dynamo db是否真正理解值 json 我所说的值是指json与键关联的对象 RDBMS 中的一行 dynamo db 是否理解有一些属性以及它
  • 如何在现有高流量网站上进行facebook审核流程?

    I have 已经实现 Facebook 登录 注册在网站上 使用 Javascript 和 PHP SDK 的组合 我记得审核过程大约花了一两天的时间 那是一个全新的网站 现在 我需要将相同的功能添加到另一个现有的且目前每天有数百名访问者
  • 如何使用 devtoolset-8-gcc 安装 gcc8

    我使用的是 CentOS Linux 版本 7 3 1611 其中安装了 gcc 4 8 5 20150623 我正在寻找一种安装较新版本的 gcc 的方法 特别是 8 1 我找到了以下关于如何安装 gcc v7 的网站link 1 htt
  • 结合使用 `mutate_at` 和 `na_if` 仅将某些列的零替换为 NA

    我的数据采用以下格式 library tidyverse df lt mtcars df lt df gt mutate vs doubled vs 2 gt select mpg cyl vs am vs doubled head df