r - dplyr:根据一个变量中的值逐行替换值
问题描述
我想将年龄过大(年龄 >90)的参与者排除在分析之外。通常我会这样做:
df <- data.frame(age=c(1,10, 100), x= 1:3, y= 1:3)
df[df$age > 90, ] <- NA
我不知道如何用 dplyr 做到这一点。如果我们想替换一个变量,我们可以使用
library(dplyr)
df <- data.frame(age=c(1,10, 100), x= 1:3, y= 1:3)
df %>%
mutate(age= replace(age, age> 90, NA))
所以我想我可以使用
df %>%
mutate_all(function(i) replace(i, age> 90, NA))
我也尝试过mutate_if
,mutate_at
但没有成功。在阅读了关于 SO 的问题后,我认为“问题”是在我的情况下,我需要使用 dplyr 逐行更改值。
解决方案
您需要以使测试列 ( age
) 位于最后的方式排列列。
library(dplyr)
df %>%
select(x, y, age) %>%
mutate_all(~replace(.x, age> 90, NA))
# x y age
#1 1 1 1
#2 2 2 10
#3 NA NA NA
推荐阅读
- sql - Redshift - 如何将过去 4 周的数字作为每行的窗口函数求和?
- python - 枕头 - 使用粘贴在不透明图像上的透明度
- primefaces - 我如何解决 JSF 中的 Firefox 刷新问题
- graphql - 来自不受控制的 API 的 GraphQL 模式语言处理映射类型
- asp.net - IIS 10 找不到此页面的资源类。请检查资源文件是否存在,然后重试
- c# - 将目录移动到 Google 存储桶
- automation - 如何将现有插件添加到 Vividus 项目
- python - 无法在基于 pyQT 的 GUI 之外调用按钮单击函数()
- oracle - 在现有表中创建列时出现问题
- email - 如何在 ubuntu 上设置邮件服务器(postfix 或其他)?