Kapitel 39 Werte in mehreren Variablen ersetzen
Oft enthalten Datensätze Zahlen oder Zeichen, die etwas spezielles bedeuten und die wir ersetzen müssen. So wird manchmal die 999 benutzt, um einen fehlenden Wert anzugeben.Manchmal wollen wir auch einfach bestmmte Werte ersetzen
39.0.1 Wir benötigen folgende Pakete
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Wollen wir einen Wert im ganzen Datenset ersetzen, ist dies ziemlich einfach. Erfinden wir zuerst ein paar Daten.
set.seed(666)
=100
samplesize<-1:samplesize
id<-sample(c(0:10,999), size=samplesize, rep=TRUE)
pain<-sample(c(0:10,999), size=samplesize, rep=TRUE)
depression<-data.frame(id, samplesize, pain, depression)
data
<-data %>%
dataarrange(desc(pain), desc(depression))
head(data)
## id samplesize pain depression
## 1 60 100 999 999
## 2 29 100 999 10
## 3 3 100 999 8
## 4 11 100 999 8
## 5 90 100 999 8
## 6 79 100 999 6
Wenn wir im gesamten Datensatz die 999 ersetzen möchten, ist dies sehr einfach. Der folgende Befehl wird in jeder Variable alle Werte 999 mit NA ersetzen.
=="999"]<-NA
data[datahead(data)
## id samplesize pain depression
## 1 60 100 NA NA
## 2 29 100 NA 10
## 3 3 100 NA 8
## 4 11 100 NA 8
## 5 90 100 NA 8
## 6 79 100 NA 6
Wenn wir nur in einer Variable Werte ersetzen möchten, geht dies auch. Der folgende Befehl erstzt die 9 in der Variable depression mit NA.
$depression[data$depression==9]<-NA
datahead(data)
## id samplesize pain depression
## 1 60 100 NA NA
## 2 29 100 NA 10
## 3 3 100 NA 8
## 4 11 100 NA 8
## 5 90 100 NA 8
## 6 79 100 NA 6
Wenn wir nun über mehrere Variablen Werte ersetzen wollen, können wir dies zum Beispiel wie folgt erledigen:
arrange(data,desc(pain), desc(depression))
## id samplesize pain depression
## 1 1 100 10 10
## 2 23 100 10 8
## 3 2 100 10 6
## 4 95 100 10 5
## 5 96 100 10 5
## 6 94 100 10 1
## 7 73 100 10 0
## 8 30 100 10 NA
## 9 25 100 9 10
## 10 55 100 9 8
## 11 63 100 9 7
## 12 18 100 9 5
## 13 50 100 9 5
## 14 64 100 9 2
## 15 80 100 9 0
## 16 36 100 9 NA
## 17 5 100 8 7
## 18 68 100 8 2
## 19 21 100 8 1
## 20 57 100 8 0
## 21 43 100 8 NA
## 22 70 100 8 NA
## 23 75 100 8 NA
## 24 20 100 7 8
## 25 24 100 7 7
## 26 26 100 7 6
## 27 71 100 7 4
## 28 98 100 7 3
## 29 34 100 7 2
## 30 14 100 7 NA
## 31 56 100 7 NA
## 32 15 100 6 10
## 33 45 100 6 3
## 34 77 100 6 2
## 35 27 100 6 NA
## 36 62 100 6 NA
## 37 51 100 6 NA
## 38 61 100 6 NA
## 39 69 100 5 10
## 40 58 100 5 8
## 41 92 100 5 7
## 42 13 100 5 5
## 43 40 100 5 3
## 44 19 100 5 NA
## 45 100 100 5 NA
## 46 99 100 4 8
## 47 4 100 4 5
## 48 37 100 4 5
## 49 81 100 4 4
## 50 85 100 4 4
## 51 10 100 4 3
## 52 89 100 4 NA
## 53 67 100 3 10
## 54 31 100 3 8
## 55 76 100 3 8
## 56 78 100 3 7
## 57 44 100 3 5
## 58 22 100 3 4
## 59 33 100 3 3
## 60 65 100 3 2
## 61 39 100 3 0
## 62 32 100 3 NA
## 63 86 100 3 NA
## 64 52 100 2 8
## 65 9 100 2 5
## 66 49 100 2 5
## 67 72 100 2 5
## 68 83 100 2 4
## 69 66 100 2 3
## 70 91 100 2 2
## 71 12 100 2 1
## 72 38 100 2 1
## 73 87 100 2 1
## 74 84 100 2 NA
## 75 35 100 2 NA
## 76 42 100 2 NA
## 77 8 100 1 8
## 78 46 100 1 6
## 79 97 100 1 6
## 80 28 100 1 4
## 81 93 100 1 4
## 82 47 100 1 3
## 83 16 100 1 1
## 84 74 100 1 NA
## 85 53 100 1 NA
## 86 54 100 0 3
## 87 59 100 0 3
## 88 17 100 0 2
## 89 7 100 0 0
## 90 88 100 0 NA
## 91 29 100 NA 10
## 92 3 100 NA 8
## 93 11 100 NA 8
## 94 90 100 NA 8
## 95 79 100 NA 6
## 96 6 100 NA 4
## 97 41 100 NA 4
## 98 48 100 NA 3
## 99 82 100 NA 1
## 100 60 100 NA NA
head(data)
## id samplesize pain depression
## 1 60 100 NA NA
## 2 29 100 NA 10
## 3 3 100 NA 8
## 4 11 100 NA 8
## 5 90 100 NA 8
## 6 79 100 NA 6
<-data %>%
datamutate(across(c(pain, depression), ~replace(., . ==8, NA)))
head(data)
## id samplesize pain depression
## 1 60 100 NA NA
## 2 29 100 NA 10
## 3 3 100 NA NA
## 4 11 100 NA NA
## 5 90 100 NA NA
## 6 79 100 NA 6