filtern mit subset? Ergebnis nicht als tibble darstellen

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

Moderatoren: EDi, jogo

Antworten
nulli
Beiträge: 14
Registriert: So Jan 24, 2021 3:34 pm

filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von nulli »

Liebe Leute,

ich brauche eure Hilfe!

Ich möchte mehrere Überprüfungen meiner erhobenen Daten durchführen:

Code: Alles auswählen

subset(data, data$Alter > data$Betriebszugehörigkeit)
Damit soll z.B. überprüft werden, ob das angegebene Alter größer ist, als die angegebene Betriebszugehörigkeit in Jahren.

Bei allen meinen Überprüfungen wird als Ergebnis angezeigt:
0 rows | 1-10 of 146 columns

Wenn ich die Datei jetzt als PDF exportieren, wird mir aber immer das gesamte tibble ausgedruckt. Somit habe ich 5 Seiten, die inhaltlich keinen Mehrwert bieten. Was muss ich machen, damit als Ergebnis nur angezeigt wird, dass diese 0 ist?

Oder gibt es dafür einen anderen Befehl, der das gewünschte Ergebnis einfacher darstellt?

Vielen Dank!
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von EDi »

Du meinst ?nrow

Die data$ sind unnötig in subset.
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.
nulli
Beiträge: 14
Registriert: So Jan 24, 2021 3:34 pm

Re: filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von nulli »

super, damit funktioniert es. Vielen Dank für die Lösung und den Hinweis :)
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von jogo »

Hallo nulli,

wenn es nur um die Anzahl geht, ist subset() ein zu großes Geschütz:

Code: Alles auswählen

sum(data$Alter > data$Betriebszugehörigkeit)
oder

Code: Alles auswählen

with(data, Alter > Betriebszugehörigkeit)
Gruß, Jörg
nulli
Beiträge: 14
Registriert: So Jan 24, 2021 3:34 pm

Re: filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von nulli »

Hallo Jörg,

auch für diesen Tipp vielen Dank :-)

Jetzt habe ich bei einer Überprüfung das "Problem", dass eine Variable nur Kategorial ist.

Ich würde gerne überprüfen, ob die Teamgröße (metrisch) die Unternehmensgröße (kategorial) übersteigt. Hiermit soll nur überprüft werden, ob es unrealistische Antworten gibt und ich würde davon ausgehen, dass es keine gibt. Daher möchte ich mir alle Werte anzeigen lassen, die unrealistisch sind.

Kategorien der Unternehmensgröße:
1 1-49
2 50-99
3 100-499
4 500-999
5 1000-1499
usw.

Die Überprüfung müsste dann wie folgt funktionieren:
Zeige mir alle Werte...
bei denen Teamgröße < 50 und Kategorie > 1
bei denen Teamgröße < 100 und Kategorie > 2
bei denen Teamgröße < 500 und Kategorie > 3
bzw. anders formuliert:
bei denen Teamgröße zwischen 1-49 und Kategorie > 1
bei denen Teamgröße zwischen 50-99 und Kategorie > 2
bei denen Teamgröße zwischen 100-499 und Kategorie > 3

Den Sinn dieser Überprüfung darf man gerne in Frage stellen, allerdings wüsste ich gerne wie man so etwas macht :-D

Vielen Dank im Voraus!
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von jogo »

Hallo nulli,

kannst Du bitte mal den output von

Code: Alles auswählen

str(data$Kategorie)
in Deine nächste Nachricht kopieren?

Gruß, Jörg
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von bigben »

Hallo nulli,

es gibt immer verschiedene Ansätze. Man könnte eine neue metrische Variable erstellen, deren Inhalt von der Unternehmensgröße abhängt. Immer wenn die Unternehmensgröße "1 bis 49" ist, ist die Hilfsvariable 49, immer wenn die Unternehmensgröße "50 bis 99" ist, ist die Hilfsvariable 99 und so weiter. Hinweise, wie das gehen kann, finden sich hier: http://forum.r-statistik.de/viewtopic.php?f=20&t=2162

Jetzt kannst Du einfach die Teamgröße mit dieser Hilfsvariable vergleichen, weil beides ja metrische Variablen sind.


Ein ganz anderer Weg:


nulli hat geschrieben: Mo Jun 14, 2021 9:44 amZeige mir alle Werte...
bei denen Teamgröße < 50 und Kategorie > 1
bei denen Teamgröße < 100 und Kategorie > 2
bei denen Teamgröße < 500 und Kategorie > 3
bzw. anders formuliert:
bei denen Teamgröße zwischen 1-49 und Kategorie > 1
bei denen Teamgröße zwischen 50-99 und Kategorie > 2
bei denen Teamgröße zwischen 100-499 und Kategorie > 3
Das ist pro Zeile eine logische UND-Verknüpfung und die Zeilen sind untereinander mit einem ODER verknüpft. Logisches UND ist in R '&', logisches ODER ist '|'.

In Pseudocode also

Code: Alles auswählen

ifelse((Teamgröße < 50 & Kategorie > 1) |
       (Teamgröße < 100 & Kategorie > 2) |
       (Teamgröße < 500 & Kategorie > 3) |
       (Teamgröße < 1000 & Kategorie > 4),
       yes = "Team kleiner", no = "Team größer")
HTH,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
jogo
Beiträge: 2085
Registriert: Fr Okt 07, 2016 8:25 am

Re: filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von jogo »

... oder Du bestimmst die Kategorien nochmal selbst und hast danach noch einen einfachen Vergleich:

Code: Alles auswählen

x <- c(1, 49,
50, 99, 
100, 499, 
500, 999,
1000, 1499)

data.frame(x,
y=cut(x, breaks=c(1, 50, 100, 500, 1000, Inf), labels=1:5, right=FALSE))
Gruß, Jörg
nulli
Beiträge: 14
Registriert: So Jan 24, 2021 3:34 pm

Re: filtern mit subset? Ergebnis nicht als tibble darstellen

Beitrag von nulli »

Hallo zusammen,

vielen Dank für die schnelle Hilfe und die verschiedenen Ansätze!

Ich habe es jetzt mit den Hilfsvariablen gelöst:

Code: Alles auswählen

data$Unternehmensgröße_metrisch <- recode(data$Unternehmensgröße, "1=49; 2=99";....)
nrow(data[data$Unternehmensgröße_metrisch < data$Teamgröße, ])  
Wie erwartet gibt ist das Ergebnis 0 und es gibt somit keine unrealistischen Aussagen :-)
Antworten