Seite 1 von 1

Subset erstellen

Verfasst: Di Feb 23, 2021 10:40 am
von Zabel
Hallo liebes Forum,

ich habe eine kurze Frage und wundere mich, weshalb ich kein Subset erstellen kann. (Problem sitzt wohl vor dem Bildschirm) Ist nur ein wirklich kleines Problem, welches sicher schnell behoben ist: ich möchte ein Subset erstellen, indem die Spaltennamen eines df den Werten eines anderen df entsprechen sollen. Dafür erhalte ich bei

Code: Alles auswählen

data_all<-subset(data_all,`SecId`== colnames(returns_fee10))
folgendes:
In SecId == colnames(returns_fee10) : Länge des längeren Objektes ist kein Vielfaches der Länge des kürzeren Objektes
.

Die str sagt folgendes:
str(colnames(returns_fee10)) chr [1:93] "FOUSA05KV4" "FOUSA05KV1" "FOUSA06A5L" "FOUSA06A5J" "FOUSA05KXC" "FHUSA04GRM" "FHUSA04GRN" ...
str(data_all)
tibble [980 x 10] (S3: tbl_df/tbl/data.frame)
$ SecId : chr [1:980] "FOUSA06MUZ" "FOUSA06HYO" "FHUSA04GHB" "F00000IS0P" ...
$ Management Fee : chr [1:980] "1.5000" "1.5000" "1.5000" "2.000" ...
$ Max Management Fee : chr [1:980] "1.5000" NA NA NA ...
$ Performance Fee : chr [1:980] "20.000" "20.000" "20.000" "20.000" ...
$ Performance Fee Note: chr [1:980] NA NA NA NA ...
$ Redemption Fee : chr [1:980] NA "5.000" ".000" ".000" ...
$ Hurdle Rate : chr [1:980] "-NA" "-NA" "10.000" "-NA" ...
$ High Watermark : chr [1:980] "Yes" "Yes" "Yes" "Yes" ...
$ Fund Size Date : num [1:980] 31072020 NA NA NA NA ...
$ Fund Size USD : chr [1:980] "460900000.000" NA NA NA ...
Vielen Dank im voraus! LG

Re: Subset erstellen

Verfasst: Di Feb 23, 2021 10:49 am
von EDi
Ich vermute du möchtest den '%in%' Operator anstatt '==' verwenden...

Re: Subset erstellen

Verfasst: Di Feb 23, 2021 10:52 am
von Zabel
Traum. MVP

Re: Subset erstellen

Verfasst: Di Feb 23, 2021 10:56 am
von Athomas
Und: den Namen der Variablen in Hochkommata zu setzen - funktioniert tatsächlich?

Re: Subset erstellen

Verfasst: Di Feb 23, 2021 12:15 pm
von Zabel

Code: Alles auswählen

data_all<-subset(data_all,`SecId`%in% rbind(colnames(returns_fee10),colnames(returns_fee20)))
läuft wunderbar

Re: Subset erstellen

Verfasst: Di Feb 23, 2021 1:03 pm
von EDi
wieso rbind() und nicht c() ?

Mich erstaunt dass das funktioniert...

Re: Subset erstellen

Verfasst: Di Feb 23, 2021 1:51 pm
von Athomas
Das, was ich für ein Hochkomma gehalten habe, ist wohl ein Accent Grave (Olala :lol: ) - und ich nehme an, der wird bei einem Namen einfach ingoriert!

Das rbind erzeugt halt eine (n x 1)-Matrix anstelle eines Vektors - ist ja fast dasselbe :) - zumindest die Inhalte sind identisch...

Wenn Du weiter so programmierst, wirst Du wohl irgendwann Fehler erzeugen, die Dich verzweifeln lassen!

Re: Subset erstellen

Verfasst: Di Feb 23, 2021 5:24 pm
von EDi
Accent Grave (Olala :lol: )
Ich nenn' die 'Backticks'...

Braucht man eigentlich nur wenn man syntaktisch invalide Namen hat: https://stat.ethz.ch/R-manual/R-devel/l ... names.html
Das rbind erzeugt halt eine (n x 1)-Matrix
Das wird eine n x 2 matrix und wenn die längen Unterschiedlich sind, wird noch lustiger:

Code: Alles auswählen

rbind(1:3, 4:10)
Und %in% macht daraus einen vektor? Oder subset macht dann einen Vektor?
Das sind mir zu viele Annahmen und Nebeneffekte! Würde dem Code nicht vertrauen, dass er macht was angedacht ist...
Wenn Du weiter so programmierst, wirst Du wohl irgendwann Fehler erzeugen, die Dich verzweifeln lassen!
Zustimmt. Man (auch Frau) kann ja jetzt schon nicht über die Funktionsweise der Zeile genau Schlüsse ziehen.

Re: Subset erstellen

Verfasst: Mi Feb 24, 2021 12:03 am
von Athomas
Das Stichwort "backticks" ist ja Gold wert - damit kann man 1a kryptisch programmieren:

Code: Alles auswählen

> `  @  \n +-/ 3` <- 42
> `  @  \n +-/ 3`
[1] 42

Re: Subset erstellen

Verfasst: Mi Feb 24, 2021 6:57 pm
von EDi
Ja, man kann in R auch den Plus-Operator durch ein Minus tauschen...

Wenn man sich unbedingt selbst in den Rücken schießen will: R hält einen nicht auf...