Aus 3 Variablen mach 1 je nach Datum

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Thomas_1

Aus 3 Variablen mach 1 je nach Datum

Beitrag 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
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Aus 3 Variablen mach 1 je nach Datum

Beitrag 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
Thomas_1

Re: Aus 3 Variablen mach 1 je nach Datum

Beitrag 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]
Thomas_1

Re: Aus 3 Variablen mach 1 je nach Datum

Beitrag 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]
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Aus 3 Variablen mach 1 je nach Datum

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Thomas_1

Re: Aus 3 Variablen mach 1 je nach Datum

Beitrag 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?
jogo
Beiträge: 2086
Registriert: Fr Okt 07, 2016 8:25 am

Re: Aus 3 Variablen mach 1 je nach Datum

Beitrag 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
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Aus 3 Variablen mach 1 je nach Datum

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Thomas_1

Re: Aus 3 Variablen mach 1 je nach Datum

Beitrag von Thomas_1 »

Super hat nun funktioniert!

Danke und liebe Grüße
Thomas
Antworten