【问题标题】:cant remove NA's with logi and convert them as int data type无法使用 logi 删除 NA 并将它们转换为 int 数据类型
【发布时间】:2016-11-16 23:43:41
【问题描述】:
SpecialcharactersforOKstamp: logi  NA NA NA NA NA NA ...
 $ Blank                   : logi  NA NA NA NA NA NA ...

我在数据框中有上述数据...我尝试使用as.character(x) fn 将它们转换为字符,我得到了下面的输出

NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [9919] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [9948] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [9977] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

如果我尝试is.na(x)==0,我得到的输出为character(0) 谁能告诉我如何将 NA 删除为零并将 logi 轻松转换为 int 数据类型

【问题讨论】:

  • 你可以试试is.na,df1[] <- lapply(df1, function(x) replace(x, is.na(x), 0))

标签: r type-conversion na


【解决方案1】:

我们可以使用is.na

df1$Blank[is.na(df1$Blank)] <- 0

或者

df1$Blank <- as.integer(!is.na(df1$Blank))
str(df1)
#'data.frame':   5 obs. of  2 variables:
#$ V1   : int  1 2 3 4 5
#$ Blank: int  0 0 0 0 0

数据

df1 <- data.frame(V1 = 1:5, Blank = NA)

【讨论】:

  • 在尝试第三个时,我将所有行都设为 NA,并且我在所有行中得到 1 1 1 作为您给出的第二个解决方案的输出
  • @anonymous 根据我展示的可重现示例,它正在转换为 0。您可以检查数据中的 NA 是真实的 NA 还是字符“NA”。如果是后者,可以转换成真实的NA改成0,或者df1$Blank[df1$Blank=="NA"] &lt;- 0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多