我有一个数据框包含条目;看起来这些值不被视为NA,因为is.na返回FALSE。我想将这些值转换为NA,但找不到方法。替换<NA>与NA
回答
这可能是一个问题的两个类是字符和因素。这应该循环通过dtaframe并转换“NA”值到真<NA>
的,但只是对于那些两类:
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)
(未测试在不存在的数据示例的)使用的形式为:df_name[]
将尝试保留原本数据帧的结构,否则将失去其类属性。我看到ujjwal认为你的NA的拼写已经侧翼“<>”字,所以你可以试试这个功能比较一般:
make.true.NA <- function(x) if(is.character(x)||is.factor(x)){
is.na(x) <- x %in% c("NA", "<NA>"); x} else {
x}
感谢您的帮助。问题是,我没有设法做出一个可重复的例子,在这个例子中我获得了NA和
我怀疑你不想将所有字符向量转换为数字,所以你可能想将这个转换应用到特定的列:'dfrm [targets] < - lapply(dfrm [targets],make.true.NA) ; dfrm [targets] < - lapply(dfrm [targets],as.numeric)' – 2014-10-06 21:01:44
是的,我必须转换为数字,但它只有在我首先取消我的数据框时才有效。我不知道为什么它出现在列表中,但至少可以。 – user34771 2014-10-07 06:45:08
使用dfr[dfr=="<NA>"]=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
您可以用naniar包也这么做,使用replace_with_na
和相关功能。
dfr <- data.frame(A = c(1, 2, "<NA>", 3), B = c("a", "b", "c", "d"))
library(naniar)
# dev version - devtools::install_github('njtierney/naniar')
is.na(dfr)
#> A B
#> [1,] FALSE FALSE
#> [2,] FALSE FALSE
#> [3,] FALSE FALSE
#> [4,] FALSE FALSE
dfr %>% replace_with_na(replace = list(A = "<NA>")) %>% is.na()
#> A B
#> [1,] FALSE FALSE
#> [2,] FALSE FALSE
#> [3,] TRUE FALSE
#> [4,] FALSE FALSE
# You can also specify how to do this for many variables
dfr %>% replace_with_na_all(~.x == "<NA>")
#> # A tibble: 4 x 2
#> A B
#> <int> <int>
#> 1 2 1
#> 2 3 2
#> 3 NA 3
#> 4 4 4
你可以阅读更多有关使用replace_with_na
here
- 1. 如何在R中替换NA与NA
- 2. 合并NA替换
- 3. 替换<与<元件
- 4. 用NA替换数据
- 5. 回归Lm并替换NA
- 6. PHP替换“\ [”与“<script>”
- 7. 使用sed替换<?与<?php
- 8. 替换NA取决于条件的值
- 9. 将矩阵中的0替换为NA
- 10. 替换为“NA”重复变量用awk
- 11. 用表中的0替换NA
- 12. 用行mutate_at替换NA表示
- 13. 替换概率向量中的NA
- 14. 将NA替换为上一次出现
- 15. 与NA替换除了最后一行给出ID,其中R
- 16. 通过与该行的行替换NA意味着
- 17. 替换倒数第二个非空行尾与NA R中
- 18. 加入data.table似乎与被替换值NA的
- 19. 替换列表中的所有值(保留标题)与NA
- 20. 用同一行中的另一个单元替换“NA”与R
- 21. NSXML将“<”替换为“%lt;”
- 22. JavaScript替换不替换第二个<
- 23. 替换<center>
- 24. ckeditor替换<?php
- 25. 替换“</html>”
- 26. 替换<br>
- 27. 与NA
- 28. 如何用R0中的单因子变量的数字替换<NA>?
- 29. 替换<a>与<label> jquery动画滚动
- 30. 替换<?与<?PHP的所有文件phpstorm,CL等
我猜你在谈论中的R这样做呢?否则,na很模糊......北美?无法使用? – 2014-10-06 16:48:59
对不起在R; NA代表缺失值 – user34771 2014-10-06 16:55:43
通过将dput(your.data.frame [some.rows.that.contain.such.values,])的输出添加到您的问题来提供您的数据样本。 – Roland 2014-10-06 17:05:47