使用mutate和gsub将所有值替换为特定列中的NA

如何解决使用mutate和gsub将所有值替换为特定列中的NA

在数据框中,我想将某些列中的所有值替换为NA。

Test2
       ID    Sex Location Obs1 Obs4        Obs5
1  291978 FEMALE        2 16.5 4836 0.563636364
2  292429 FEMALE        2 20.2 5428 0.584158416
3  292466 FEMALE        2 19.2   48 0.005208333
4  293656 FEMALE        2 15.8 2904 0.417721519
5  291993 FEMALE        2 18.1 6194 0.900552486
6  293263 FEMALE        2 17.9  616 0.078212291
7  290200 FEMALE        2 16.7  792 0.107784431
8  292511 FEMALE        2 18.3 4992 0.568306011
9  291510 FEMALE        2 18.6  350 0.037634409
10 293711 FEMALE        2 18.2  264 0.032967033
11 295234 FEMALE        2 16.5  216 0.036363636
12 293839 FEMALE        2 15.0 4114 0.806666667
13 291057 FEMALE        2 16.7   56 0.005988024
14 295094 FEMALE        2 16.5 3154 0.503030303
15 295562 FEMALE        2 14.7  966 0.142857143
16 292381 FEMALE        2 17.4 1980 0.258620690
17 289765 FEMALE        2 17.8 3492 0.544943820
18 293871 FEMALE        2 18.2 3760 0.516483516
19 291076 FEMALE        2 16.8   88 0.011904762
20 293851 FEMALE        2 16.1 2242 0.366459627

首先,我想指定应将哪些列的值替换为NA。只能是一列,也可以是多列。这就是为什么我更喜欢将其放入向量。

> Obs <- c('Obs1')

然后,我尝试使用以下方法将“ Obs1”列中的所有值替换为NA:

> deselect <- Test2 %>% mutate(across(paste(Obs),gsub(".*",NA,paste(Obs))))

但是,它给了我这个错误:

Error: Problem with `mutate()` input `..1`.
x Problem with `across()` input `.fns`.
i Input `.fns` must be NULL,a function,a formula,or a list of functions/formulas.
i Input `..1` is `across(paste(Obs),paste(Obs)))`.
Run `rlang::last_error()` to see where the error occurred.

有人知道如何在mutate内,mutate内使用gsub吗?还是应该使用其他方法?

非常感谢!

解决方法

或使用<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width,initial-scale=1.0" /> <!-- Bootstrap --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous" /> <title></title> </head> <body> <div class="container bg-color"> <div class="row pt-5"> <div class="col-12"> <input class="checkbox-tools test-tools" type="radio" name="typ-av-el" id="elhandel-button"> <label class="for-checkbox-tools" for="elhandel-button"> <p>button 1</p> </label> <!-- --> <input class="checkbox-tools test-tools" type="radio" name="typ-av-el" id="elnät-button"> <label class="for-checkbox-tools" for="elnät-button"> <p>button 2</p> </label> <div> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> </body> </html>

mutate_at
,

这就是您使用mutateacross的方式。

cols_na <- c("wt","hp")

mtcars %>% 
  mutate(across(one_of(cols_na),~ NA))
,

我建议使用一种base R方法,在Obs中定义要替换的列:

#Data
df <- structure(list(ID = c(291978L,292429L,292466L,293656L,291993L,293263L,290200L,292511L,291510L,293711L,295234L,293839L,291057L,295094L,295562L,292381L,289765L,293871L,291076L,293851L),Sex = c("FEMALE","FEMALE","FEMALE"),Location = c(2L,2L,2L),Obs1 = c(16.5,20.2,19.2,15.8,18.1,17.9,16.7,18.3,18.6,18.2,16.5,15,14.7,17.4,17.8,16.8,16.1),Obs4 = c(4836L,5428L,48L,2904L,6194L,616L,792L,4992L,350L,264L,216L,4114L,56L,3154L,966L,1980L,3492L,3760L,88L,2242L),Obs5 = c(0.563636364,0.584158416,0.005208333,0.417721519,0.900552486,0.078212291,0.107784431,0.568306011,0.037634409,0.032967033,0.036363636,0.806666667,0.005988024,0.503030303,0.142857143,0.25862069,0.54494382,0.516483516,0.011904762,0.366459627)),class = "data.frame",row.names = c("1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"))

接下来的代码:

#Define cols
Obs <- c('Obs1')
#Assign
index <- which(names(df) %in% Obs) 
df[,index] <- gsub(".*",NA,df[,index])

输出:

       ID    Sex Location Obs1 Obs4        Obs5
1  291978 FEMALE        2 <NA> 4836 0.563636364
2  292429 FEMALE        2 <NA> 5428 0.584158416
3  292466 FEMALE        2 <NA>   48 0.005208333
4  293656 FEMALE        2 <NA> 2904 0.417721519
5  291993 FEMALE        2 <NA> 6194 0.900552486
6  293263 FEMALE        2 <NA>  616 0.078212291
7  290200 FEMALE        2 <NA>  792 0.107784431
8  292511 FEMALE        2 <NA> 4992 0.568306011
9  291510 FEMALE        2 <NA>  350 0.037634409
10 293711 FEMALE        2 <NA>  264 0.032967033
11 295234 FEMALE        2 <NA>  216 0.036363636
12 293839 FEMALE        2 <NA> 4114 0.806666667
13 291057 FEMALE        2 <NA>   56 0.005988024
14 295094 FEMALE        2 <NA> 3154 0.503030303
15 295562 FEMALE        2 <NA>  966 0.142857143
16 292381 FEMALE        2 <NA> 1980 0.258620690
17 289765 FEMALE        2 <NA> 3492 0.544943820
18 293871 FEMALE        2 <NA> 3760 0.516483516
19 291076 FEMALE        2 <NA>   88 0.011904762
20 293851 FEMALE        2 <NA> 2242 0.366459627

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-