neue Variable erstellen

Alles zum Thema der beschreibenden Statistik

Moderator: jogo

sabrina5678
Beiträge: 10
Registriert: Mi Mär 04, 2020 4:11 pm

Re: neue Variable erstellen

Beitrag von sabrina5678 »

Hallo Jörg,

entschuldige, das habe ich vergessen:

Pakete:

Code: Alles auswählen

library(car); library(ggplot2); library(haven); library(lavaan); library(psych); library(pwr)
Infos zu Paketen und Versionen
>

Code: Alles auswählen

 sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)


Matrix products: default

locale:
[1] LC_COLLATE=German_Germany.1252  LC_CTYPE=German_Germany.1252    LC_MONETARY=German_Germany.1252 LC_NUMERIC=C                   
[5] LC_TIME=German_Germany.1252    

attached base packages:
[1] splines   stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] semTools_0.5-2  forcats_0.4.0   stringr_1.4.0   dplyr_0.8.3     purrr_0.3.3     readr_1.3.1     tidyr_1.0.0     tibble_2.1.3    tidyverse_1.2.1
[10] Rcmdr_2.6-2     effects_4.1-4   RcmdrMisc_2.7-0 sandwich_2.5-1  pwr_1.2-2       psych_1.8.12    lavaan_0.6-5    haven_2.1.1     ggplot2_3.2.1  
[19] car_3.0-3       carData_3.0-2   knitr_1.25     

loaded via a namespace (and not attached):
 [1] nlme_3.1-140          lubridate_1.7.4       httr_1.4.1            RColorBrewer_1.1-2    tools_3.6.1           backports_1.1.5      
 [7] R6_2.4.0              rpart_4.1-15          Hmisc_4.3-1           nortest_1.0-4         DBI_1.0.0             lazyeval_0.2.2       
[13] colorspace_1.4-1      nnet_7.3-12           withr_2.1.2           tidyselect_0.2.5      gridExtra_2.3         mnormt_1.5-5         
[19] curl_4.2              compiler_3.6.1        cli_1.1.0             rvest_0.3.4           htmlTable_1.13.3      xml2_1.2.2           
[25] labeling_0.3          tcltk2_1.2-11         scales_1.0.0          checkmate_2.0.0       digest_0.6.21         pbivnorm_0.6.0       
[31] foreign_0.8-72        relimp_1.0-5          minqa_1.2.4           rmarkdown_1.16        rio_0.5.16            base64enc_0.1-3      
[37] jpeg_0.1-8.1          pkgconfig_2.0.3       htmltools_0.4.0       lme4_1.1-21           htmlwidgets_1.5.1     rlang_0.4.0          
[43] readxl_1.3.1          rstudioapi_0.10       generics_0.0.2        jsonlite_1.6          zoo_1.8-7             acepack_1.4.1        
[49] zip_2.0.4             magrittr_1.5          Formula_1.2-3         Matrix_1.2-17         Rcpp_1.0.2            munsell_0.5.0        
[55] abind_1.4-5           lifecycle_0.1.0       stringi_1.4.3         MASS_7.3-51.4         grid_3.6.1            parallel_3.6.1       
[61] crayon_1.3.4          lattice_0.20-38       hms_0.5.1             zeallot_0.1.0         pillar_1.4.2          tcltk_3.6.1          
[67] boot_1.3-23           stats4_3.6.1          GPArotation_2014.11-1 glue_1.3.1            evaluate_0.14         mitools_2.4          
[73] latticeExtra_0.6-29   modelr_0.1.5          data.table_1.12.4     png_0.1-7             vctrs_0.2.0           nloptr_1.2.1         
[79] cellranger_1.1.0      gtable_0.3.0          assertthat_0.2.1      xfun_0.10             openxlsx_4.1.0.1      broom_0.5.2          
[85] survey_3.37           e1071_1.7-3           class_7.3-15          survival_3.1-8        cluster_2.1.0         ellipsis_0.3.0       
>
Code:

Code: Alles auswählen

d_raw <- read_sav("eurobarometer.sav")
internet_Info <- recode (d_raw$qc10, "1=0; 2=0; 3=0; 4=0; 5=0; 8=0; 9=0; 10=0; 11=NA; else=1") 
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: neue Variable erstellen

Beitrag von jogo »

Hallo Sabrina,

bei mir geht problemlos:

Code: Alles auswählen

### setwd("~/Downloads") ### je nach Bedarf
library("haven")
library("car")

d_raw <- read_sav("eurobarometer.sav")
class(d_raw)
head(d_raw$qc10, 10)
recode(d_raw$qc10, "5='iNet'; 6='sozNet'; else='sonst'")
d_raw$qc10neu <- recode(d_raw$qc10, "5='iNet'; 6='sozNet'; else='sonst'")
cbind(d_raw$qc10, d_raw$qc10neu)[1:10,]
Ergebnis:

Code: Alles auswählen

> cbind(d_raw$qc10, d_raw$qc10neu)[1:10,]
      [,1] [,2]   
 [1,] "8"  "sonst"
 [2,] "3"  "sonst"
 [3,] "3"  "sonst"
 [4,] "3"  "sonst"
 [5,] "3"  "sonst"
 [6,] "3"  "sonst"
 [7,] "3"  "sonst"
 [8,] "5"  "iNet" 
 [9,] "3"  "sonst"
[10,] "3"  "sonst"
Anscheinend ist die Objektklasse mit Vorsicht zu genießen.

Code: Alles auswählen

> class(d_raw)
[1] "tbl_df"     "tbl"        "data.frame"
> d_raw[, c("qc10", "qc10neu")]
Fehler: `x` and `labels` must be same type
Einiges funktioniert nicht wie sonst bei Dataframes üblich, obwohl das Objekt auch ein Dataframe sein soll.

Gruß, Jörg
sabrina5678
Beiträge: 10
Registriert: Mi Mär 04, 2020 4:11 pm

Re: neue Variable erstellen

Beitrag von sabrina5678 »

Hallo Jörg,

vielen Dank für deine Bemühungen!

durch Bernhards vorherigen Kommentar bezüglich haven_labelled Variablen habe ich mittlerweile das Paket "labelled" heruntergeladen und habe die Erstellung der neuen Variable wie folgt ausprobiert:

Code: Alles auswählen

info_impf <- factor(d_raw$qc10, levels = c(6,7), labels = c( "online social networks", "other internet sites"))
Scheint wohl auch zu funktionieren, werde jedoch lieber auf deine Variante zurückgreifen, Danke!


Hast/habt du/ihr vielleicht auch noch eine Idee, wo mein Fehler bei folgenden Punkten liegen könnte?

1. Ich möchte die Variablen qc8_1 bis qc8_5 zu einer Variable (impf_einst) zusammenfassen und die Ausprägungen von 1-4 rekodieren. Auch möchte ich den fehlenden Wert, bzw. die Ausprägung "DK" als fehlenden Wert kennzeichnen.
Ich habe es (erfolglos) wie folgt ausprobiert:

Code: Alles auswählen


 impf_einst <- recode(d_raw$qc8_1:d_raw$qc8_5, "1=4; 2=3; 3=2; 4=1; 5=NA")
 
 
2. Das gleiche möchte ich bei der Variable qc2 vornehmen, wobei ich hier die Ausprägung 5 ("it depends on the disease") und 6 ("DK") als fehlende Werte kennzeichnen möchte und die Skala von 1 bis 4 ebenfalls rekodieren möchte.


Die Rekodierung hat hier ebenfalls nicht funktioniert.
Diese habe ich wie folgt ausprobiert:

Code: Alles auswählen

Impf_zuv <- car::recode(d_raw$qc2, "1=4; 2=3; 3=2; 4=1; 5=NA; 6=NA")



Nachtrag:

"Unreplaced values treated as NA as .x is not compatible. Please specify replacements exhaustively or supply .default"

Diese Fehlermeldung erhalte ich, wenn ich fogenden data.frame erstellen möchte:

Code: Alles auswählen


vars_impf_einst <- c("d_raw$qc8_1", "d_raw$qc8_2", "d_raw$qc8_3", "d_raw$qc8_4", "d_raw$qc8_5")
  
d_neu <- data.frame(
  
  iNet_info <- car::recode(d_raw$qc10, "5='iNet'; 6='sozNet'; else='sonst'"),
  impf_einst = rowMeans(d_raw[vars_impf_einst], na.rm = TRUE),
  Impf_zuv =  car::recode(d_raw$qc2, "1=4; 2=3; 3=2; 4=1; 5=NA; 6=NA"), 
  bildung = recode(d_raw$d8r2, "8=NA")
 
)
 
Die fehlenden Werte habe ich wie folgt definiert:

Code: Alles auswählen

d_raw$qc8_1[d_raw$qc8_1==5]<-NA
d_raw$qc8_2[d_raw$qc8_2==5]<-NA
d_raw$qc8_3[d_raw$qc8_3==5]<-NA
d_raw$qc8_4[d_raw$qc8_4==5]<-NA
d_raw$qc8_5[d_raw$qc8_5==5]<-NA

d_raw$qc2[d_raw$qc2==6]<-NA 

Falls hier jemand eine Idee hat, wo hier mein Fehler liegt, würde ich mich über Hilfe sehr freuen!
Antworten