如何将整个数据集中的值编码为 NA

How to code values across the whole dataset as NA

我有一个数据集,其中 "-2""-1" 代表 NA。我能够以这种方式重新编码每一列,但我无法在整个数据集中有效地做到这一点。我知道这个问题可能有一个简单的解决方案,但到目前为止我还没有找到。谁能帮帮我?

这是我的数据

structure(list(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25), Datum = structure(c(1650326400, 
1650326400, 1650931200, 1651104000, 1651104000, 1651104000, 1651104000, 
1651104000, 1651190400, 1651449600, 1651536000, 1651536000, 1651622400, 
1651622400, 1651622400, 1652054400, 1652140800, 1652140800, 1652140800, 
1652140800, 1652227200, 1652227200, 1652227200, 1652313600, 1652400000
), class = c("POSIXct", "POSIXt"), tzone = "UTC"), `Frage 2 - Bitte wählen Sie Ihren Standort.` = c("Kreis Nordfriesland", 
"Kreis Nordfriesland", "Landesamt für Zuwanderung und Flüchtlinge", 
"Landesamt für Zuwanderung und Flüchtlinge", "Kreis Rendsburg-Eckernförde", 
"Kreis Rendsburg-Eckernförde", "Kreis Rendsburg-Eckernförde", 
"-1", "Stadt Neumünster", "-1", "Kreis Stormarn", "Kreis Herzogtum Lauenburg", 
"Stadt Kiel", "Kreis Rendsburg-Eckernförde", "-1", "Kreis Dithmarschen", 
"-1", "Kreis Dithmarschen", "Kreis Dithmarschen", "Kreis Dithmarschen", 
"Kreis Dithmarschen", "Kreis Dithmarschen", "Stadt Lübeck", "Kreis Rendsburg-Eckernförde", 
"Kreis Dithmarschen"), `Frage 3 - Bitte wählen Sie Ihre Position.` = c("Sachgebietsleitung", 
"Sachgebietsleitung", "Teamleitung", "Sachgebietsleitung", "Mitarbeitende*r", 
"Teamleitung", "Mitarbeitende*r", "-1", "Mitarbeitende*r", "-1", 
"Sachgebietsleitung", "Sachgebietsleitung", "Sachgebietsleitung", 
"Mitarbeitende*r", "-1", "Sachgebietsleitung", "-1", "Teamleitung", 
"Mitarbeitende*r", "Mitarbeitende*r", "Mitarbeitende*r", "Mitarbeitende*r", 
"Teamleitung", "Mitarbeitende*r", "Mitarbeitende*r"), `Frage 5 - Unabhängig von der möglichen Entwicklung im Rahmen des Projektes - In welchen Leitbildbereichen sehen Sie sich selbst unter den Behörden der Zuwanderungsverwaltung als Positivbeispiel und könnten sich vorstellen, anderen Zuwanderungs-/Ausländerbehörden im Austausch davon zu berichten/Fragen zu beantworten? - Mensch` = c("-1", 
"-1", "-1", "-1", "Mensch", "Mensch", "-1", "-2", "Mensch", "-2", 
"Mensch", "Mensch", "-1", "-1", "-2", "-1", "-2", "-1", "-1", 
"Mensch", "Mensch", "-1", "Mensch", "-1", "Mensch"), `Frage 5 - Unabhängig von der möglichen Entwicklung im Rahmen des Projektes - In welchen Leitbildbereichen sehen Sie sich selbst unter den Behörden der Zuwanderungsverwaltung als Positivbeispiel und könnten sich vorstellen, anderen Zuwanderungs-/Ausländerbehörden im Austausch davon zu berichten/Fragen zu beantworten? - Entscheidungen` = c("-1", 
"-1", "-1", "-1", "Entscheidungen", "Entscheidungen", "-1", "-2", 
"Entscheidungen", "-2", "Entscheidungen", "Entscheidungen", "-1", 
"-1", "-2", "-1", "-2", "-1", "-1", "-1", "-1", "Entscheidungen", 
"Entscheidungen", "-1", "-1"), `Frage 5 - Unabhängig von der möglichen Entwicklung im Rahmen des Projektes - In welchen Leitbildbereichen sehen Sie sich selbst unter den Behörden der Zuwanderungsverwaltung als Positivbeispiel und könnten sich vorstellen, anderen Zuwanderungs-/Ausländerbehörden im Austausch davon zu berichten/Fragen zu beantworten? - Handeln` = c("-1", 
"Handeln", "-1", "-1", "-1", "-1", "Handeln", "-2", "Handeln", 
"-2", "Handeln", "-1", "-1", "-1", "-2", "-1", "-2", "-1", "-1", 
"-1", "Handeln", "-1", "Handeln", "-1", "-1"), `Frage 5 - Unabhängig von der möglichen Entwicklung im Rahmen des Projektes - In welchen Leitbildbereichen sehen Sie sich selbst unter den Behörden der Zuwanderungsverwaltung als Positivbeispiel und könnten sich vorstellen, anderen Zuwanderungs-/Ausländerbehörden im Austausch davon zu berichten/Fragen zu beantworten? - Transparenz` = c("-1", 
"-1", "-1", "-1", "-1", "-1", "-1", "-2", "Transparenz", "-2", 
"-1", "-1", "-1", "-1", "-2", "-1", "-2", "-1", "Transparenz", 
"-1", "Transparenz", "-1", "-1", "-1", "-1"), `Frage 5 - Unabhängig von der möglichen Entwicklung im Rahmen des Projektes - In welchen Leitbildbereichen sehen Sie sich selbst unter den Behörden der Zuwanderungsverwaltung als Positivbeispiel und könnten sich vorstellen, anderen Zuwanderungs-/Ausländerbehörden im Austausch davon zu berichten/Fragen zu beantworten? - Vernetzung` = c("-1", 
"-1", "-1", "Vernetzung", "-1", "-1", "Vernetzung", "-2", "Vernetzung", 
"-2", "-1", "-1", "-1", "-1", "-2", "Vernetzung", "-2", "Vernetzung", 
"Vernetzung", "-1", "Vernetzung", "Vernetzung", "Vernetzung", 
"-1", "Vernetzung"), `Frage 5 - Unabhängig von der möglichen Entwicklung im Rahmen des Projektes - In welchen Leitbildbereichen sehen Sie sich selbst unter den Behörden der Zuwanderungsverwaltung als Positivbeispiel und könnten sich vorstellen, anderen Zuwanderungs-/Ausländerbehörden im Austausch davon zu berichten/Fragen zu beantworten? - Abläufe & Prozesse` = c("-1", 
"-1", "-1", "Abläufe & Prozesse", "-1", "Abläufe & Prozesse", 
"-1", "-2", "Abläufe & Prozesse", "-2", "Abläufe & Prozesse", 
"-1", "-1", "-1", "-2", "-1", "-2", "-1", "Abläufe & Prozesse", 
"-1", "-1", "-1", "-1", "-1", "Abläufe & Prozesse")), row.names = c(NA, 
-25L), class = c("tbl_df", "tbl", "data.frame"))   

这个怎么样?使用 tidyversena_if:

# library(tidyverse) # to load all packages at once!
library(dplyr) # mutate, pipe, etc
library(tibble) # tibble/tribble
library(tidyr) # na_if

df <- tribble(
  ~id, ~q1, ~q2,
  -1, -1, "-1",
  -2, 1, "A",
  -3, 3, "B"
)
df
#> # A tibble: 3 x 3
#>      id    q1 q2   
#>   <dbl> <dbl> <chr>
#> 1    -1    -1 -1   
#> 2    -2     1 A    
#> 3    -3     3 B

df2 <- df %>% mutate(across(-id, na_if, y = -1))
df2
#> # A tibble: 3 x 3
#>      id    q1 q2   
#>   <dbl> <dbl> <chr>
#> 1    -1    NA <NA> 
#> 2    -2     1 A    
#> 3    -3     3 B

reprex package (v2.0.1)

于 2022-05-16 创建

我认为 David 的解决方案是一个很好的解决方案,但如果您愿意重新编码所有列,那么 na_if() 接受一个数据框,所以它更简单:

library(dplyr)
mydata |>
    na_if(-1) |>
    na_if(-2)

如果您有两个以上的值要替换,我将不支持使用 na_if() 调用的大链,而更愿意使用 mutate(across())recode.

如果您希望一次调用所有内容,我会使用更灵活的 replaceacross 所有列:

library(dplyr)
df %>% 
  mutate(across(everything(), ~ replace(., . %in% c(-1, -2), NA)))

在基数 R 中:

df <- lapply(df, \(x) replace(x, x %in% -1:-2, NA))