Gibt es einen einfacheren Weg in den Ports oder beschriftete Pakete, um beschriftete Variablen in numerische Variablen umzuwandeln?Numerische Variablen nach Numerierung nach Numerierung umschreiben
Der folgende Code veranschaulicht mein Problem. Nach einer wichtigen Datei aus einer Sav-Datei ist jede Variable eine beschriftete Variable. Einige sind ursprünglich numerische Variablen mit 98 und 99 als fehlende Werte. Also muss ich diese umschreiben, um auf NA zu setzen, aber dann muss ich die umcodierte Variable mit as.numeric()
umwandeln. Gibt es einen einfacheren Weg, dies zu tun?
#Load libraries
library(devtools)
library(dplyr)
library(car)
#Install package with data
install_github('sjkiss/LSIRM')
#Load library
library(LSIRM)
#Loda dataset
data(ces)
#show variable of interest
table(ces$PES15_74)
#Get variable labels
variable_labels<-lapply(ces, function(x) attr(x, 'label'))
#Get value labels
value_labels<-lapply(ces, function(x) attr(x, 'labels'))
#Show class of variable of interest
class(ces$PES15_74)
#show variable and value labels
ces$PES15_74
attr(ces$PES15_74, 'labels') #Note 98 and 99 should be missing values
#Show mean
mean(ces$PES15_74, na.rm=T)
#Recode out missing values
ces$tv<-recode(ces$PES15_74, "98:99=NA")
#Show class
class(ces$tv)
#Try with as.factor.result=F
ces$tv2<-recode(ces$PES15_74, "98:99=NA", as.factor.result=F)
#show class
class(ces$tv2)
#coerce to numeric
ces$tv<-as.numeric(ces$tv)
#show mean after coercion
mean(ces$tv, na.rm=T)
#show mean uncoerced
mean(ces$PES15_74, na.rm=T)
Wenn Sie reguläre numerische Variablen hatten, können Sie einfach 98 und 99 in NA ändern. Warum konvertieren Sie nicht einfach die notwendigen Spalten in numerische Werte und kümmern sich dann um bestimmte Zahlen, nachdem alles eingestellt ist? –
da Sie sagen, dass Sie zu numerischen zwingen müssen, nehme ich an, dass 'ces $ PES15_74' ein Zeichen ist? dann könntest du versuchen type.convert (c (1: 5, '98', '99'), na.strings = c ('98 ',' 99 ')) ' – rawr