library(tidyverse)
mytbl <- tibble(a = rep(c(1,1,0,1), 4), b= rep(c(1,0,0,1), 4))
# A tibble: 16 × 2
a b
<dbl> <dbl>
1 1 1
2 1 0
3 0 0
4 1 1
5 1 1
6 1 0
7 0 0
8 1 1
9 1 1
10 1 0
11 0 0
12 1 1
13 1 1
14 1 0
15 0 0
16 1 1
Wenn ich alle auf der zweiten Spalte Bedingung ist gutConditional Ersatz mit dplyr des mutate_all
dplyr::mutate_all(mytbl, funs(replace(., b != 0, NA)))
# A tibble: 16 × 2
a b
<dbl> <dbl>
1 NA NA
2 1 0
3 0 0
4 NA NA
5 NA NA
6 1 0
7 0 0
8 NA NA
9 NA NA
10 1 0
11 0 0
12 NA NA
13 NA NA
14 1 0
15 0 0
16 NA NA
Aber wenn ich auf der ersten Spalte Bedingung nur die erste Spalte
dplyr::mutate_all(mytbl, funs(replace(., a != 0, NA)))
# A tibble: 16 × 2
a b
<dbl> <dbl>
1 NA 1
2 NA 0
3 0 0
4 NA 1
5 NA 1
6 NA 0
7 0 0
8 NA 1
9 NA 1
10 NA 0
11 0 0
12 NA 1
13 NA 1
14 NA 0
15 0 0
16 NA 1
I ersetzt bin mir sicher, dass ich bei meiner Vorgehensweise etwas falsch mache, und ich könnte das sicherlich nicht-doprig machen, aber es scheint, dass das funktionieren sollte. Sie können dies mit mehr Spalten für ein ähnliches Ergebnis erweitern.
Das sieht seltsam aus. Versuchen Sie es mit 'if_else', d. H.' Mytbl%>% mutate_all (Spaß (if_else (a! = 0,., NA_real _))) ' – akrun
Das ist wirklich seltsam. 'ifelse' hat dieses Verhalten nicht, also wenn Sie nur wollen, dass es funktioniert, hat @akrun Sie abgedeckt. Das Verhalten ist jedoch wirklich merkwürdig. Wenn ich 'select' verwende, um die Spaltenreihenfolge umzukehren, kehrt sich der Fehler um, so dass es ein Problem mit der Spaltenreihenfolge gibt. Wenn ich 'mutate_each (..., everything())' verwende, bekomme ich das gleiche Problem, aber wenn ich 'mutate_each (..., b)' verwende, weist es die 'NA's in Spalte' b' korrekt zu. Ich wünschte, ich hätte eine bessere Antwort für Sie, aber ich habe keine Ahnung, was vor sich geht. –