【问题标题】:How to replace 0 or missing value with NA in R [duplicate]如何在R中用NA替换0或缺失值[重复]
【发布时间】:2019-02-05 21:13:16
【问题描述】:

这是我到目前为止所做的 data 是数值数据类型

if (is.na(data) || attribute==0){replace(data,NA)}

它给了我错误信息

替换错误(属性,NA):缺少参数“值”,没有默认值

【问题讨论】:

  • 您错误地使用了replace。见help(replace)

标签: r


【解决方案1】:

mutate_all:

library(dplyr)

df %>%
  mutate_all(~replace(., . == 0, NA))

为了安全起见,或者使用mutate_if

df %>%
  mutate_if(is.numeric, ~replace(., . == 0, NA))

请注意,无需检查NA,因为无论如何我们都将替换为NA

输出:

> df %>%
+   mutate_all(~replace(., . == 0, NA))
    X  Y    Z
1   1  5 <NA>
2   4  4    2
3   2  3    2
4   5  5    2
5   5  3 <NA>
6  NA  4 <NA>
7   3  3    1
8   5  3    2
9   3  1    1
10  2 NA    5
11  5  5 <NA>
12  2  5    2
13  4  4    4
14  3  4 <NA>
15 NA NA    3
16  5  2    1
17  1  4 <NA>
18 NA  1    4
19  1  1    5
20  5  1    2

> df %>%
+   mutate_if(is.numeric, ~replace(., . == 0, NA))
    X  Y Z
1   1  5 0
2   4  4 2
3   2  3 2
4   5  5 2
5   5  3 0
6  NA  4 0
7   3  3 1
8   5  3 2
9   3  1 1
10  2 NA 5
11  5  5 0
12  2  5 2
13  4  4 4
14  3  4 0
15 NA NA 3
16  5  2 1
17  1  4 0
18 NA  1 4
19  1  1 5
20  5  1 2

数据:

set.seed(123)
df <- data.frame(X = sample(0:5, 20, replace = TRUE),
                 Y = sample(0:5, 20, replace = TRUE),
                 Z = as.character(sample(0:5, 20, replace = TRUE)))

【讨论】:

  • 你能告诉我如何导入你提到的库,因为它不允许我使用 mutate_all。我在 R_markdown 上测试它
  • @jdfhf install.packages('dplyr') 然后library(dplyr) 应该为您提供最新版本。你的dplyr 版本可能已经过时了。
【解决方案2】:

您可以只使用replace 而无需任何附加功能/包:

data <- replace(data, data == 0, NA)

现在假设 data 是您的数据框。

否则,您可以简单地插入列名,例如如果您的数据框是df 和列名data

df$data <- replace(df$data, df$data == 0, NA)

【讨论】:

  • 这是使用 base r 的最佳解决方案。如果有人想要 dplyr 解决方案,那么最简单的方法是 df %&gt;% map_df(~ na_if(.x, 0))
【解决方案3】:

假设datadataframe,那么您可以使用sapply 根据一组过滤器更新您的值:

new.data = as.data.frame(sapply(data,FUN= function(x) replace(x,is.na(x) | x == 0)))

【讨论】:

    猜你喜欢
    • 2021-10-11
    • 2013-09-04
    • 1970-01-01
    • 2019-10-11
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2021-07-02
    相关资源
    最近更新 更多