Filtern

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

Moderatoren: EDi, jogo

wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Filtern

Beitrag von wbart »

Ich werde wahnsinnig. So schwer kann es doch nicht sein! Ich habe ein Objekt mit ca 1000 Werten. Tibble, Data Frame, vector alles schon mal auprobiert.

Code: Alles auswählen

 dput(head(naba_ecm))
structure(list(NABA_MATRISOME = c("A2M", "A2ML1", "ABI3BP", "AC010330.1", 
"ACAN", "ADAM10")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-6L))
> 
Anhand dieses Objektes möchte ich eine zweites Objekt filtern.

Code: Alles auswählen

> dput(head(Log2TPM))
structure(list(Name = c("LOC389834", "LOC100233156", "LOC107987401", 
"LOC105379566", "LOC105379565", "LOC105379564"), TMP1 = c(1.0409485246248, 
3.97952237211088, 0, 0.235322680993796, 0.457426190887988, 0), 
    TMP2 = c(1.01009233638769, 3.77763012059746, 0, 0, 0, 0), 
    TMP3 = c(1.19744396726423, 3.80470411235141, 0, 0, 0.491288731897442, 
    0), TMP4 = c(1.01796465388372, 3.5315187049757, 0.0765399411584887, 
    0, 0, 0), TMP5 = c(0.996465398884609, 3.82304618079213, 0, 
    0, 0, 0.0369407354649453), TMP6 = c(1.17786677887261, 3.69650578993945, 
    0, 0.0656012617053121, 0, 0), TMP7 = c(1.10651583126625, 
    4.04688389751188, 0, 0, 0, 0), TMP8 = c(1.13575811890208, 
    3.52609385823907, 0, 0, 0, 0)), row.names = c("LOC389834", 
"LOC100233156", "LOC107987401", "LOC105379566", "LOC105379565", 
"LOC105379564"), class = "data.frame")
> 
Ich möchte also die zweite Tabelle auf die Zeilen reduzieren die mit dem ersten Objekt übereinstimmen.

Wie geht das. Ich habe filter und subset versucht aber nichts klappt.

Kann mir jemand das Procedere verraten?

Gruß
Werner (genervt)
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Filtern

Beitrag von Athomas »

Ich möchte also die zweite Tabelle auf die Zeilen reduzieren die mit dem ersten Objekt übereinstimmen.
:?:
wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Re: Filtern

Beitrag von wbart »

Filtern. z.B. habe ich es so versucht:

Code: Alles auswählen

filter(Log2TPM,Log2TPM$Name==naba_ecm)
.

Da bekomme ich dann aber die Fehlermeldung: "Error: Result must have length 38552, not 1026"

Mit subset bekomme ich eine Auswahl mit 0 Observierungen.

Code: Alles auswählen

subset(Log2TPM,Log2TPM$Name==naba_ecm)
ruedi_br
Beiträge: 159
Registriert: Do Mär 01, 2018 3:53 pm

Re: Filtern

Beitrag von ruedi_br »

Könnte sowas gemeint sein wie in viewtopic.php?f=7&t=1972?
Grüße
Ruedi
fortune(111)
wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Re: Filtern

Beitrag von wbart »

Eigentlich nicht.
Ich möchte eine Tabelle filtern. So wie wenn man einen festen Wert in einer Spalte hat. z.B. filter(data, data$colname > 2), nur dass ich halt 1000 Bedingungen habe und diese in einer variablen gespeichert habe.
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Filtern

Beitrag von Athomas »

Guck Dir bitte mal an, welche Daten Du zur Verfügung gestellt hast - und sag mir dann, was von der zweiten Tabelle mit der ersten übereinstimmen soll!?
wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Re: Filtern

Beitrag von wbart »

Die Werte die bei naba_ecm stehen, also "A2M", "A2ML1", "ABI3BP" sind das Selektionkriterium.
Sie müssen in Log2TPM in Name = c("LOC389834", "LOC100233156", etc) vorhanden sein.
Alle Werte die dieses Kriterium nicht erfüllen möchte ich aus Log2TPM entfernen.
wbart
Beiträge: 89
Registriert: Fr Mär 16, 2018 4:08 pm

Re: Filtern

Beitrag von wbart »

Habe das Problem jetzt tatsächlich mit einem left join gelöst bekommen. Ich denke immer noch das das mit filtern eigenlich gehen müsste aber was solls. Danke erstmal für die Hilfe.
Athomas
Beiträge: 768
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Filtern

Beitrag von Athomas »

Ah jetzt - ja! Eiine Insel!
Kann es sein, dass in Deinen Beispielsdaten nix passt?

Wenn man selbst eine Lösung findet, sollte man die auch hinschreiben - damit nachfolgende Generationen auch was davon haben!
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Filtern

Beitrag von EDi »

filter(Log2TPM,Log2TPM$Name==naba_ecm)
1. meinst du dplyr::filter? oder stats::filter? Sollte man explizit angeben, vorallem da dplyr unverschämterweise diesen Konflikt bewusst herbeiführt.
2. naba_ecm hat eine Länge >1, möchttest du %in% als Operator statdessen?
3. In deinem Beispiel passt nichts ?! Wozu soll das nütze sein?
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