我有一個數據框包含條目;看起來這些值不被視爲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. 合併NA替換
- 4. 替換<與<元件
- 5. 迴歸Lm並替換NA
- 6. 用NA替換整數(0)
- 7. 根據條件替換NA
- 8. 用NA替換數據
- 9. PHP替換「\ [」與「<script>」
- 10. 如何系統與R數據幀之前的值替換<NA>行
- 11. 如何用R中的零替換<NA>值?
- 12. 用data.frame中的數字替換非<NA>
- 13. 使用sed替換<?與<?php
- 14. 替換的NA的區段的最後NA與一個有效值
- 15. 用列組的平均值替換NA
- 16. 替換某些列中的NA
- 17. 在ffdf對象中替換NA
- 18. 替換爲「NA」重複變量用awk
- 19. 用NA替換空值使用Pentaho Kettle
- 20. 一些值替換矩陣NA
- 21. 用行mutate_at替換NA表示
- 22. 替換概率向量中的NA
- 23. 將矩陣中的0替換爲NA
- 24. 替換NA取決於條件的值
- 25. 用另一個df替換na的值
- 26. 在2d r表中替換na
- 27. 按行替換NA值意味着
- 28. 替換由NA根據從其他列
- 29. 將NA替換爲上一次出現
- 30. 用表中的0替換NA
我猜你在談論中的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