R 替换<;NA>;与NA
我有一个包含条目的数据框;由于is.NA返回FALSE,因此这些值似乎未被视为NA。我想将这些值转换为NA,但找不到方法 这可能是一个问题的两类是性格和因素。这应该在数据帧上循环,并将“NA”值转换为trueR 替换<;NA>;与NA,r,replace,na,R,Replace,Na,我有一个包含条目的数据框;由于is.NA返回FALSE,因此这些值似乎未被视为NA。我想将这些值转换为NA,但找不到方法 这可能是一个问题的两类是性格和因素。这应该在数据帧上循环,并将“NA”值转换为true,但仅适用于这两个类: make.true.NA <- function(x) if(is.character(x)||is.factor(x)){ is.na(x) <- x=="NA"; x} else {
,但仅适用于这两个类:
make.true.NA <- function(x) if(is.character(x)||is.factor(x)){
is.na(x) <- x=="NA"; x} else {
x}
df[] <- lapply(df, make.true.NA)
使用dfr[dfr==“”]=NA
其中dfr
是您的数据帧
例如:
> dfr<-data.frame(A=c(1,2,"<NA>",3),B=c("a","b","c","d"))
> dfr
A B
1 1 a
2 2 b
3 <NA> c
4 3 d
> is.na(dfr)
A B
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] FALSE FALSE
[4,] FALSE FALSE
> dfr[dfr=="<NA>"] = NA **key step**
> is.na(dfr)
A B
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] TRUE FALSE
[4,] FALSE FALSE
>dfr-dfr
A B
11A
2 b
3 c
三维
>is.na(dfr)
A B
[1,]假
[2,]假
[3,]假
[4,]假
>dfr[dfr==“”]=NA**关键步骤**
>is.na(dfr)
A B
[1,]假
[2,]假
[3,]对错
[4,]假
您也可以使用软件包执行此操作,方法是使用将_替换为_na
和相关函数
dfr A B
#>[1,]假
#>[2,]假
#>[3,]假
#>[4,]假
dfr%%>%将_替换为_-na(替换=列表(A=”“)%%>%is.na()
#>A B
#>[1,]假
#>[2,]假
#>[3,]对错
#>[4,]假
#您还可以为许多变量指定如何执行此操作
dfr%>%将_替换为_na_all(~.x==“”)
#>#tibble:4 x 2
#>A B
#>
#> 1 2 1
#> 2 3 2
#>3 NA 3
#> 4 4 4
你可以阅读更多关于使用
replace_with_na
的内容,我猜你是说用R来做这件事吧?否则,na是相当模糊的。。。北美?不可用?是,对不起,在R;NA代表缺少的值为您的问题添加dput(您的.data.frame[some.rows.that.contain.such.values,])
的输出,提供一个数据示例。str(your.data.frame)
的结果也将有助于我们查看列的存储方式。感谢您的帮助。问题是,我无法制作一个可复制的示例,在该示例中,我获得了NA和。BondedDust函数允许我转换NA和真NA(它们在is.NA(df)中看起来都是真的),但是我的df的结构表明,包含条目的变量被编码为因子而不是数字。我怀疑您不想将所有字符向量转换为数字,因此您可能只想将此转换应用于特定列:dfrm[targets]是的,我必须转换为数字,但它只有在首先取消列出数据帧时才有效。我不知道为什么它会显示为列表,但至少它是可以的。
> dfr<-data.frame(A=c(1,2,"<NA>",3),B=c("a","b","c","d"))
> dfr
A B
1 1 a
2 2 b
3 <NA> c
4 3 d
> is.na(dfr)
A B
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] FALSE FALSE
[4,] FALSE FALSE
> dfr[dfr=="<NA>"] = NA **key step**
> is.na(dfr)
A B
[1,] FALSE FALSE
[2,] FALSE FALSE
[3,] TRUE FALSE
[4,] FALSE FALSE