Seite 1 von 1

Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 9:53 am
von Thomas_1
Liebes Forum,

ich hab jetzt ein bischen Erfahrung mit R, hier komm ich aber nicht weiter :(
Ziel ist es alle Daten aus dem Jahr 2016 in eine Variable zu kopieren, egal ob es der 1., 2., oder 3. Testzeitpunkt ist.
Das habe ich folgendermaßen probiert - Testweise für 1 von 3 Variablen:
[/> if(B$t1_year == "2016") {
+ B$Stdw <-B$t1_M_KMS_Stdw_Best
+ }
Error in if (B$t1_year == "2016") { : argument is of length Zero


oder so:

B$Stdw[B$t1_year == "2016"] <- B$t1_M_KMS_Stdw_Best
Error in `$<-.data.frame`(`*tmp*`, "Stdw", value = numeric(0)) :
replacement has 0 rows, data has 233

Bitte um Hilfe, hab schon alles probiert was mir einfällt und werde nicht schlauer...

Thomas

Re: Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 11:28 am
von jogo
Hallo Thomas,

willkommen im Forum!
Thomas_1 hat geschrieben: Mo Sep 11, 2017 9:53 am ich hab jetzt ein bischen Erfahrung mit R, hier komm ich aber nicht weiter :(
Ziel ist es alle Daten aus dem Jahr 2016 in eine Variable zu kopieren, egal ob es der 1., 2., oder 3. Testzeitpunkt ist.
Das habe ich folgendermaßen probiert - Testweise für 1 von 3 Variablen:
[/> if(B$t1_year == "2016") {
+ B$Stdw <-B$t1_M_KMS_Stdw_Best
+ }
Error in if (B$t1_year == "2016") { : argument is of length Zero

oder so:

B$Stdw[B$t1_year == "2016"] <- B$t1_M_KMS_Stdw_Best
Error in `$<-.data.frame`(`*tmp*`, "Stdw", value = numeric(0)) :
replacement has 0 rows, data has 233
Kannst Du bitte den Output von

Code: Alles auswählen

str(B$t1_year)
str(B)
in Deine nächste Nachricht kopieren?

Gruß, Jörg

Re: Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 11:40 am
von Thomas_1
Hallo Jörg,

bin mir nicht sicher ob das bei B weiter hilf, da das Datenfile sehr sehr umfangreich ist.
schaus dir mal an:
[/ str(B$t1_year)
num [1:233] 2016 2016 2016 2017 2016 ...
> str(B)
'data.frame': 233 obs. of 2279 variables:
$ Code : int 8 350 361 395 434 442 443 446 448 475 ...
$ Geburtsdatum : POSIXct, format: "2011-02-13 01:00:00" "2010-07-09 02:00:00" ...
$ Gender : int 1 1 2 2 2 1 1 2 2 2 ...
$ Zuord_Kat : int 9 10 10 22 24 24 24 24 24 23 ...
$ KG_IG : int 2 1 1 1 1 1 1 1 1 1 ...
$ Stadt_Land : int 1 1 1 2 2 2 2 2 2 2 ...
$ T1 : int 1 1 1 1 1 1 1 1 1 1 ...
$ T2 : int NA NA NA NA NA 1 1 1 1 1 ...
$ T3 : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_Anthro : int 2 2 2 2 2 2 2 2 2 2 ...
$ t1_Mot : int 1 1 1 1 1 1 1 1 1 1 ...
$ t1_APL : int 1 1 1 NA 1 1 1 1 1 NA ...
$ t1_EPL : int 1 1 1 NA 1 1 NA 1 1 NA ...
$ t1_FB01 : int NA 2 1 NA NA NA NA NA NA NA ...
$ t1_FB02 : int NA 2 NA NA NA NA NA NA NA NA ...
$ t2_Anthro : int NA NA NA NA NA 2 1 NA NA 2 ...
$ t2_Mot : int NA NA NA NA NA 1 1 1 1 1 ...
$ t2_APL : int NA NA NA NA NA NA NA NA NA NA ...
$ t2_EPL : int NA NA NA NA NA NA NA NA NA NA ...
$ t2_FB01 : int NA NA NA NA NA NA NA NA NA NA ...
$ t2_FB02 : int NA NA NA NA NA NA NA NA NA NA ...
$ t3_Anthro : int NA NA NA NA NA NA NA NA NA NA ...
$ t3_Mot : int NA NA NA NA NA NA NA NA NA NA ...
$ t3_APL : logi NA NA NA NA NA NA ...
$ t3_EPL : logi NA NA NA NA NA NA ...
$ Ausschluss_generell : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_Years_of_Age : int 5 5 5 6 5 4 4 4 4 4 ...
$ t1_date_r : Factor w/ 3 levels " ","01.12.15",..: 1 1 1 1 1 1 1 1 1 1 ...
$ t1_date : POSIXct, format: "2016-10-18 02:00:00" "2016-03-16 01:00:00" ...
$ t1_kl_date : Factor w/ 3 levels " ","01-DEC-2015",..: 1 1 1 1 1 1 1 1 1 1 ...
$ t1_SOZIODEM : logi NA NA NA NA NA NA ...
$ t1_Größe : num 1.14 1.23 1.18 1.16 1.17 ...
$ t1_Gewicht : num 18.6 25.8 25 20.8 23.2 17.5 17.4 18 14 14.5 ...
$ t1_Bauchumfang : num 52.1 62 61 51.6 52 56 57 54 49 50.4 ...
$ t1_BU_tape : num NA NA NA NA NA NA NA NA NA NA ...
$ t1_Anthro_Tester : int 1 10 10 NA 4 28 27 27 27 4 ...
$ t1_bmi_k : num 14.4 17.1 18 15.3 16.9 ...
$ t1_bmi_sds_k : num NA NA NA NA NA NA NA NA NA NA ...
$ t1_perztl : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_SBMI_WHO : num 20.1 26.3 27.2 21.4 24.9 21 21.3 21.8 18.9 21.8 ...
$ t1_HeightSD_WHO : num 0 1.9 1 -0.4 0.7 0.4 1 1.1 -1.9 -1.6 ...
$ t1_WeightSD_WHO : num -0.5 2.3 1.9 -0.2 1.2 0 0.5 0.8 -1.5 -0.8 ...
$ t1_BMISD_WHO : num -0.8 1.2 1.5 0 1 -0.4 -0.3 0.1 -0.9 0.1 ...
$ t1_BMISDS_Kro : num -0.072 0.92 1.33 -0.11 0.86 -0.53 -0.4 0.07 -0.96 0.06 ...
$ t1_BMI_Kro_Perz : num 23 81 90 46 79 30 34 52 18 52 ...
$ t1_Age_groups8_18 : logi NA NA NA NA NA NA ...
$ t1_Ort : logi NA NA NA NA NA NA ...
$ t1_schule_Thgr : logi NA NA NA NA NA NA ...
$ t1_schule_Thgr_neu : logi NA NA NA NA NA NA ...
$ t1_Psy_Tester : Factor w/ 32 levels " ","1","10","11",..: 27 3 21 1 24 21 17 21 17 18 ...
$ t1_geschw : int 1 1 3 NA 1 0 2 1 3 1 ...
$ t1_InstrVerst : int 1 1 1 NA 1 1 1 1 1 2 ...
$ t1_SprVerst : int 1 2 1 NA 1 1 1 1 1 1 ...
$ t1_RF_AZ_ZA : int 2 1 2 NA 1 2 1 2 1 2 ...
$ t1_RF_EPL_FBM : int 1 2 1 NA 1 2 1 2 1 2 ...
$ t1_Ausschluss : int 1 1 1 NA 1 1 1 1 1 1 ...
$ t1_SKB_PS : logi NA NA NA NA NA NA ...
$ t1_SKB_PS_Test : logi NA NA NA NA NA NA ...
$ t1_SKB1_PS : int 1 2 2 NA 2 3 1 2 1 NA ...
$ t1_SKB2_PS : int 2 3 1 NA 1 1 3 1 2 2 ...
$ t1_SKB3_PS : int 4 4 4 NA 4 4 4 4 4 2 ...
$ t1_SKB4_PS : int 2 2 1 NA 1 2 3 2 1 1 ...
$ t1_KörpUnz : logi NA NA NA NA NA NA ...
$ t1_Bemerkungen : Factor w/ 174 levels " ","\"mag alles\"",..: 1 1 1 1 1 1 1 16 1 105 ...
$ t1_EPL_PS : logi NA NA NA NA NA NA ...
$ t1_Letzte_Mahlzeit : Factor w/ 49 levels " ","10:00","10:00, im KiGa",..: 49 49 49 1 49 19 49 49 25 49 ...
$ t1_Hungergefühl : int 1 0 0 NA 2 0 2 0 2 1 ...
$ t1_Lieblingsessen : Factor w/ 207 levels " ","alles","Alles",..: 167 167 167 1 168 167 2 90 167 142 ...
$ t1_EPL_Kennen : logi NA NA NA NA NA NA ...
$ t1_abgelehntes_Essen : Factor w/ 164 levels " ","...mit Soße",..: 73 1 52 1 161 1 132 58 58 111 ...
$ t1_EPL01_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL01_PS_v : int 3 1 3 NA 1 1 1 3 3 NA ...
$ t1_EPL02_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL02_PS_v : int 3 1 3 NA 2 1 NA 3 3 NA ...
$ t1_EPL03_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL03_PS_v : int 3 3 3 NA 3 3 3 3 3 3 ...
$ t1_EPL04_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL04_PS_v : int 3 1 3 NA 3 2 1 3 3 3 ...
$ t1_EPL05_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL05_PS_v : int 3 1 2 NA 1 2 3 3 1 3 ...
$ t1_EPL06_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL06_PS_v : int 3 3 3 NA 3 3 3 3 3 3 ...
$ t1_EPL07_PS_t : int 2 1 2 NA 2 2 2 1 2 2 ...
$ t1_EPL07_PS_v : int 3 1 3 NA 3 3 3 3 3 NA ...
$ t1_EPL08_PS_t : int 1 0 3 NA 3 3 0 3 0 1 ...
$ t1_EPL08_PS_v : int 1 1 1 NA 1 1 1 1 1 NA ...
$ t1_EPL09_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL09_PS_v : int 3 1 2 NA 1 3 3 1 1 3 ...
$ t1_EPL10_PS_t : int 7 1 6 NA 7 6 5 5 3 2 ...
$ t1_EPL10_PS_v : int 3 1 3 NA 3 3 3 3 2 3 ...
$ t1_EPL11_PS_t : int 5 0 3 NA 2 1 4 1 0 0 ...
$ t1_EPL11_PS_v : int 3 1 1 NA 3 3 NA 1 2 NA ...
$ t1_EPL12_PS_t : int 1 3 1 NA 3 0 2 1 1 2 ...
$ t1_EPL12_PS_v : int 3 3 2 NA 3 1 3 3 2 3 ...
$ t1_EPL13_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL13_PS_v : int 1 3 3 NA 3 1 3 1 3 3 ...
$ t1_EPL14_PS_t : int NA NA NA NA NA NA NA NA NA NA ...
$ t1_EPL14_PS_v : int 3 3 3 NA 3 3 3 3 3 2 ...
$ t1_EPL15_PS_t : int 6 5 9 NA 12 8 12 8 11 4 ...
  • quote]

Re: Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 12:03 pm
von Thomas_1
...vielleicht hilft das noch:

Code: Alles auswählen

[/str(B$Stdw)
 num [1:233] 70 114 101 NA 107 93 100 67 82 81 ...code]

Re: Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 2:27 pm
von bigben
Versuch mal

Code: Alles auswählen

NeueVariable <- B[B$t1_year==2016, "t1_M_KMS_Stdw_Best"]
In Deinen eigenen Versuchen hast Du das Jahr immer mit "2016" verglichen. t1_year ist aber numerisch und kein String. Du musst also auf Gleichheit mit 2016, nicht mit "2016" prüfen.

LG,
Bernhard

Re: Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 4:05 pm
von Thomas_1
Danke Bernhard!

funktioniert leider auch nicht ganz :(
B$PR_Stdw<- B[B$t1_year==2016, "t1_M_PR_Stdw"]
Error in `$<-.data.frame`(`*tmp*`, "PR_Stdw", value = c(3, 69, 69, 50, :
replacement has 157 rows, data has 233

Anscheinend mag es R nicht wenn nicht jede Zeile einen Wert erhält...kann man das umgehen?

Re: Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 4:16 pm
von jogo
Hallo Thomas
Thomas_1 hat geschrieben: Mo Sep 11, 2017 11:40 am bin mir nicht sicher ob das bei B weiter hilf, da das Datenfile sehr sehr umfangreich ist.
schaus dir mal an:

Code: Alles auswählen

 str(B$t1_year)
 num [1:233] 2016 2016 2016 2017 2016 ...
> str(B)
'data.frame':	233 obs. of  2279 variables: ...
hm, ich hatte ursprünglich vermutet, dass die Spalte t1_year gar nicht existiert (z.B. bei einem Tippfehler im Spaltennamen)
Aber:
B$t1_year ist numerisch und "2016" ist ein character :!:
Vielleicht möchtest Du:

Code: Alles auswählen

B$Stdw <- ifelse(B$t1_year == 2016, B$t1_M_KMS_Stdw_Best, B$Stdw)
bzw.:

Code: Alles auswählen

B$Stdw[B$t1_year == 2016] <- B$t1_M_KMS_Stdw_Best[B$t1_year == 2016]
Gruß, Jörg

Re: Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 5:00 pm
von bigben
Deine Eingangsfrage war:
Ziel ist es alle Daten aus dem Jahr 2016 in eine Variable zu kopieren
Kopiert mein Code nun alles in eine Variable?
Thomas_1 hat geschrieben: Mo Sep 11, 2017 4:05 pmAnscheinend mag es R nicht wenn nicht jede Zeile einen Wert erhält...kann man das umgehen?
Du hast meinen Code umgewandelt, weil Du wohl keine neue Variable, sondern eine neue Spalte in einem Dataframe haben möchtest. Nun hat jede Spalte in einem Dataframe gleich viele Zeilen. Das ist immer so und auch nicht zu umgehen. Entweder kommen die Ergebnisse in eine eigene Variable oder in den Zeilen, die nicht aus 2016 sind, muss auch irgendwas stehen oder Du verwendest von dem Dataframe nur den Teil von 2016 und verwirfst den Rest. Ersteres macht mein Code (hoffentlich, habe ja kein Datenbeispiel von Dir), mittleres mach jogo Dir mit ifelse vor und letzteres ginge z. B. mit subset).

Was davon Du machen willst, musst Du aber schon selbst sagen.

LG,
Bernhard

Re: Aus 3 Variablen mach 1 je nach Datum

Verfasst: Mo Sep 11, 2017 5:13 pm
von Thomas_1
Super hat nun funktioniert!

Danke und liebe Grüße
Thomas