首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何跨指定列将0转换为NAs

如何跨指定列将0转换为NAs
EN

Stack Overflow用户
提问于 2022-05-16 15:51:13
回答 2查看 34关注 0票数 0

我有个数据:

代码语言:javascript
运行
复制
dat <- data.frame(col1 = sample(0:3, 10, replace = TRUE),
                  col2 = sample(0:3, 10, replace = TRUE),
                  col3 = sample(0:3, 10, replace = TRUE),
                  col4 = sample(0:3, 10, replace = TRUE))

我想把0col1col2col4中转换成NAs。我怎么做呢?大多数例子都是相反的。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-16 15:52:28

您可以使用across忽略col3,并使用na_if将0替换为NA

代码语言:javascript
运行
复制
library(dplyr)

dat %>% mutate(across(-col3, na_if, 0))

   col1 col2 col3 col4
1    NA    2    1    3
2     1   NA    0    2
3    NA    1    3    2
4     2   NA    1    3
5     1    1    1    2
6     2    1    0   NA
7     2    3    0    1
8     1    2    0    2
9     3    1    0    3
10    3    2    0    1

数据

代码语言:javascript
运行
复制
dat <- structure(list(col1 = c(0L, 1L, 0L, 2L, 1L, 2L, 2L, 1L, 3L, 3L
), col2 = c(2L, 0L, 1L, 0L, 1L, 1L, 3L, 2L, 1L, 2L), col3 = c(1L, 
0L, 3L, 1L, 1L, 0L, 0L, 0L, 0L, 0L), col4 = c(3L, 2L, 2L, 3L, 
2L, 0L, 1L, 2L, 3L, 1L)), class = "data.frame", row.names = c(NA, 
-10L))
票数 1
EN

Stack Overflow用户

发布于 2022-05-16 16:03:04

base R

代码语言:javascript
运行
复制
dat[-3][dat[-3] == 0] <- NA
#or
replace(dat[-3], dat[-3] == 0, NA)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72262029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档