Subset für logische opperatoren

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
Zabel
Beiträge: 13
Registriert: Mo Okt 28, 2019 11:41 am

Subset für logische opperatoren

Beitrag von Zabel »

Hallo Forum,

ich habe in kleines Problem und bräuchte Hilfe. Ich möchte ein Subset erstellen für Werte aus data , die größer sind als der Zeilenmean.

str:
str(data)
tibble [1,128 x 34,391] (S3: tbl_df/tbl/data.frame)
$ MCALDT: Date[1:1128], format: "1927-01-31" "1927-02-28" "1927-03-31" "1927-04-30" ...
$ 10000 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10001 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10002 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10003 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10005 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10006 : num [1:1128] -0.0135 0.0662 -0.0281 -0.0147 0.0782 ...
Idealerweise sollte das subset die gleiche Größe wie data haben, allerdings nur die Werte enthalten, die größer als der Zeilenmean sind

Für

Code: Alles auswählen

means<-rowMeans(data[2:ncol(data)],na.rm=TRUE)

winner<-subset(data>means)
bekomme ich leider nur die logischen Statements (bzw. TRUE/FALSE für die Werte) allerdings soll statt TRUE, der Wert aus data darin stehen und für FALSE ein NA. Kann mir jemand helfen?

Vielen Dank im voraus und ein schönes Wochenende!

LG Zabel
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Subset für logische opperatoren

Beitrag von bigben »

Hallo Zabel,
Zabel hat geschrieben: Fr Mär 26, 2021 1:12 pmIch möchte ein Subset erstellen für Werte aus data , die größer sind als der Zeilenmean.
Das verstehe ich nicht. Ein Subset gibt es nur von Data.frames, nicht von Werten. Im Subset sind alle Spalten enthalten, nicht einzelne Werte aus den Spalten.
Idealerweise sollte das subset die gleiche Größe wie data haben, allerdings nur die Werte enthalten, die größer als der Zeilenmean sind
Das verstehe ich nicht. Das Subset kann nur dann die gleiche Größe wie data haben wenn es identisch zu data ist.

Bist Du ganz sicher, dass das was Du haben willst ein Subset ist? Wenn nein, erklär es nochmal ohne das Wort.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Zabel
Beiträge: 13
Registriert: Mo Okt 28, 2019 11:41 am

Re: Subset für logische opperatoren

Beitrag von Zabel »

Hey Bernhard,

danke für die schnelle Antwort. Subset ist schlecht ausgedrückt von mir. Sorry!

Ich meine, dass in dem df `data` lediglich die Werte verbleiben sollen, die größer als der jeweilige rowmean sind.

Ich hoffe damit wird der gewünschte Ouput verständlicher.

LG
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Subset für logische opperatoren

Beitrag von bigben »

Ist das in der quote oben ein Blick in einen Beispieldatensatz oder schon ein gewünschter Output?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Zabel
Beiträge: 13
Registriert: Mo Okt 28, 2019 11:41 am

Re: Subset für logische opperatoren

Beitrag von Zabel »

Das ist die str des Beispieldatensatzes.

Und davon sollen nur die Werte, die größer als der Rowmean sind, "über bleiben"
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Subset für logische opperatoren

Beitrag von bigben »

Ist halt komisch, weil im Beispiel immer nur ein Wert in jeder Zeile steht. Was soll mit den Werten passieren, die nicht über dem Zeilenmittel sind? Sollen die durch NA ersetzt werden?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Zabel
Beiträge: 13
Registriert: Mo Okt 28, 2019 11:41 am

Re: Subset für logische opperatoren

Beitrag von Zabel »

Wie kommst du darauf, dass in jeder Zeile nur ein Wert steht. Das sind Daten für Aktien (bzw. returns) von 1927 - 2020 (1128 Monatsdaten) (Spalte MCALDT) und dann 34.390 weitere Spalten für die jeweiligen Aktien. Somit sind für jeden Zeitpunkt (Monat/Jahr = row) die mtl returns angegeben. Für die jeweiligen Monate gibt es einen Durchschnitt über alle Aktien. Jetzt sollen die Aktien, deren return über dem durchschnittlichen return liegen, herausselektiert werden. Somit ist nicht in jeder Zeile nur ein Wert, sondern mehrere Werte (zwischen 1 und 34390). Deshalb wunderte mich nur die Aussage. Hoffe jetzt ist das etwas besser beschrieben und du kannst evtl. helfen?

LG
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Subset für logische opperatoren

Beitrag von bigben »

Wie kommst du darauf, dass in jeder Zeile nur ein Wert steht.
Weil alles, was Du bis dahin über die Daten verraten hast so aussieht, und da nur in Spalte 10006 Werte stehen, in allen anderen NA. So komme ich darauf:
Zabel hat geschrieben: Fr Mär 26, 2021 1:12 pmstr:
str(data)
tibble [1,128 x 34,391] (S3: tbl_df/tbl/data.frame)
$ MCALDT: Date[1:1128], format: "1927-01-31" "1927-02-28" "1927-03-31" "1927-04-30" ...
$ 10000 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10001 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10002 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10003 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10005 : num [1:1128] NA NA NA NA NA NA NA NA NA NA ...
$ 10006 : num [1:1128] -0.0135 0.0662 -0.0281 -0.0147 0.0782 ...
Hoffe jetzt ist das etwas besser beschrieben und du kannst evtl. helfen?
Nö, ich hab immer noch keine konkrete Antwort, was statt der kleineren Werte jetzt da stehen soll und kann deshalb auch nicht helfen. Es soll ein Subset von Daten gemacht werden, die so aussehen, nur dass subset nicht gut ausgedrückt ist und die Daten nicht so aussehen. Wahrscheinlich bin ich einfach für diese Aufgabe nicht der richtige und deshalb halte ich mich jetzt aus dem Thread raus.

Gruß,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Zabel
Beiträge: 13
Registriert: Mo Okt 28, 2019 11:41 am

Re: Subset für logische opperatoren

Beitrag von Zabel »

okay, finde ich schade, dass du das alles so aufgenommen hast.... tut mir leid.

Ist evtl. etwas trügerisch, da in dem kurzen Ausschnitt nur für die Spalte 10006 (hat nichts mit der Anzahl der Spalten zu tun) returns verfügbar waren (daten verfügbar). Dies bedeutet allerdings nicht, dass nur in einer spalte von den 34390 werte verfügbar sind.

Schade.

Trotzdem ein schönes Wochenende und trotzdem vielen Dank!
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Subset für logische opperatoren

Beitrag von EDi »

Ich verstehe die Frage auch nicht bzw. was erreicht werden soll. Auch fehlt ein reproduzierbares Beispiel. Deshalb hab ich nichts geantwortet - weil vermutlich unnötig...
tibble [1,128 x 34,391]
Wir habe also 1128 Zeilen und 34391 Spalten.
Ein subset ist eine Teilmenge davon. Das Ergebnis sollte also weniger Zeilen / Spalten haben - das ist hier aber nicht gewollt ?!

Bitte ein reproduzierbares Beispiel posten und eine genaue Beschreibung des Ergnisses (am besten ein data.frame).
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Antworten