【问题标题】:How to assign NA to "NO" [duplicate]如何将 NA 分配给“NO”[重复]
【发布时间】:2020-09-30 15:42:01
【问题描述】:

在我的数据集中,我有一列需要将空白替换为“否”,我该怎么做?

该列是一个字符变量,只有两个值,是和否。

data<- as.data.frame(Upper_GI_2ww)
data$`Direct to Test?` = ifelse(nchar(data$`Direct to Test?`) == "NA", "No",data$`Direct to Test? )

输出:

head(data$`Direct to Test?`)
[1] "Yes" "Yes" "Yes" NA    "Yes" "Yes"

解说:

现在一切正常,这是我所做的:

首先我将 char 转换为因子。

我使用了一个简单的 is.na 函数

data$`Direct to Test?`[is.na(data$`Direct to Test?`)] <-"No"
head(data$`Direct to Test?`)
Yes Yes Yes No  Yes Yes
Levels: No Yes

现在一切正常。

【问题讨论】:

  • 请提供一个可重现的例子。
  • 根据您的问题,如果不是的话,也可能更安全/容易说,那么就没有
  • df$col[df$col == ''] &lt;- 'No'
  • 不适用于此解决方案。

标签: r data-munging


【解决方案1】:

您可以使用 nchar 来统计字符数。

df$var = ifelse(nchar(df$var) == 0, "No", df$var)

如果您只需要替换“”,这也是有效的:

df$var = ifelse(df$var == "", "No", df$var)

【讨论】:

  • 您好,非常感谢。我能问你为什么在这里使用 nchar 吗?因为我在没有 nchar 的情况下做了完全相同的事情,但它不起作用。
  • 我使用nchar,因为它计算字符数。使用dput 发布您的数据
【解决方案2】:

这是一种使用sub() 函数替换空字符串的方法

#create data
data <- c("", "yes", "", "no")

#make into data.frame
data <- as.data.frame(data)

#replacing empty strings with "No"
sub("^$", "No", data$data)

【讨论】:

  • 嗨丹尼尔,感谢您的评论,但它不起作用。以前我有空白,但现在它使用您的代码向我显示“NA”并将其替换为 NA。什么都没有发生。
  • head(data$`Direct to Test?`) [1] "Yes" "Yes" "Yes" NA "Yes" "Yes"
猜你喜欢
  • 2020-07-20
  • 2017-06-27
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 2021-08-21
  • 2014-10-10
  • 2013-02-05
  • 1970-01-01
相关资源
最近更新 更多