nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Hallo!
Ich möchte aus meinem Datensatz namens "data_19" aus der Spalte namens "spec" nur die ersten 3 Buchstaben der einzelnen Wörter anzeigen.
In der Spalte "spec" stehen die Speciesnamen von Bäumen, also wäre ein Beispiel "Lonchocarpus macrophyllus" und ich möchte, dass da nur "Lon mac" steht.
Weiß jemand, wie ich das umsetzen kann?
Das Ganze soll dann in dem Histogramm zum Einsatz kommen mit folgendem Code:
histogram(~ height_of_diam|spec, type = "density",data = data_19, ylim = c(0,1.7), xlim = c(0,1.5),main = "Histogramm_Durchmesserverteilung",xlab = "Messhöhe_Durchmesser",ylab="Häufigkeitsverteilung")
Wie würde der Code dann letztendlich aussehen, damit es im Histogramm statt den ganzen Namen immer nur die ersten 3 Buchstaben eines Wortes anzeigt?
Danke!
LG,
Evy
Ich möchte aus meinem Datensatz namens "data_19" aus der Spalte namens "spec" nur die ersten 3 Buchstaben der einzelnen Wörter anzeigen.
In der Spalte "spec" stehen die Speciesnamen von Bäumen, also wäre ein Beispiel "Lonchocarpus macrophyllus" und ich möchte, dass da nur "Lon mac" steht.
Weiß jemand, wie ich das umsetzen kann?
Das Ganze soll dann in dem Histogramm zum Einsatz kommen mit folgendem Code:
histogram(~ height_of_diam|spec, type = "density",data = data_19, ylim = c(0,1.7), xlim = c(0,1.5),main = "Histogramm_Durchmesserverteilung",xlab = "Messhöhe_Durchmesser",ylab="Häufigkeitsverteilung")
Wie würde der Code dann letztendlich aussehen, damit es im Histogramm statt den ganzen Namen immer nur die ersten 3 Buchstaben eines Wortes anzeigt?
Danke!
LG,
Evy
Re: nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Hallo!
Jörgs Variante gibt die ersten drei Buchstaben der Gattung aus, die drei Buchstaben der Art fehlen dann aber. Meine Umsetzung der Kürzungsregel um erstmal zu klären, ob das die richtige Kürzungsregel ist:
Die Histogramme werden wahrscheinlich lattice sein.
Im ganzen Satz also:
LG,
Bernhard
Jörgs Variante gibt die ersten drei Buchstaben der Gattung aus, die drei Buchstaben der Art fehlen dann aber. Meine Umsetzung der Kürzungsregel um erstmal zu klären, ob das die richtige Kürzungsregel ist:
Code: Alles auswählen
library(magrittr)
nomen <- c("Bradypodion atromontanum Branch",
"Bradypodion caeruleogule minor",
"Bradypodion caffer major",
"Bradypodion damaranum lorem ipsum",
"Bradypodion dracomontanum",
"Brookesia brygooi",
"Brookesia confidens",
"Brookesia decaryi")
spec.shortened <-
nomen %>%
strsplit(" ") %>%
lapply(function(s) substr(s, 1, 3)) %>%
lapply(function(s) paste(s, collapse = " ")) %>%
unlist
head(spec.shortened) # soll das so aussehen?
Im ganzen Satz also:
Code: Alles auswählen
library(lattice)
baeume <- data.frame(hoehe = rnorm(100, 20,5),
spec = as.character(gl(5, 20, labels=
c("Lonchocarpus macrophyllus",
"Lonchocarpus microphyllus",
"Lonchocarpus longiphyllus",
"Tyrannosaurus servus",
"Lonchocarpus angustifolius"))))
shorten <- function(nomina) unlist(
lapply(strsplit(nomina, " "), function(s) paste0(substr(s, 1, 3), collapse = " ")))
baeume$Species <- shorten(baeume$spec)
histogram(~ hoehe | Species, data = baeume, xlab="Höhe")
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Hallo Evelyn,
ich hatte die Aufgabe nicht richtig gelesen. Deshalb habe ich meine erste Antwort gelöscht.
Hier kommt eine Variante mit regulären Ausdrücken:
Danke, Bernhard, für die Beispieldaten!
Gruß, Jörg
ich hatte die Aufgabe nicht richtig gelesen. Deshalb habe ich meine erste Antwort gelöscht.
Hier kommt eine Variante mit regulären Ausdrücken:
Code: Alles auswählen
nomen <- c("Bradypodion atromontanum Branch",
"Bradypodion caeruleogule minor",
"Bradypodion caffer major",
"Bradypodion damaranum lorem ipsum",
"Bradypodion dracomontanum",
"Brookesia brygooi",
"Brookesia confidens",
"Brookesia decaryi")
sub("^(...)[^ ]* (...).*$", "\\1 \\2", nomen)
Gruß, Jörg
Re: nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Hallo!
Vielen Dank! Aber ich bin immer noch hilflos. Ich hab also noch mehr Fragen.
Hier kapier ich garnix. Warum braucht man da so viele Zwischenschritte und was bedeuten die ganzen Zeichen?
Was hat es hier mit hoehe und den Zahlen 100, 20, 5 auf sich?
Der code fürs histogramm soll gleich aussehen wie vorher, nur dass statt "data_19" der Datensatz da steht, bei dem die Namen gekürzt wurden.
Vielen Dank! Aber ich bin immer noch hilflos. Ich hab also noch mehr Fragen.
Wieso sind hier die Namen aufgelistet? Ich brauch das von allen Naben in der spalte "spec", kann ich da nicht statt den Namen gleich spec hinschreiben? Aber dann brauch ich schon auch den ganzen Datensatz, in dem die spalte sec ist, oder? Könnte das vielleicht so aussehen? also ich weise quasi als ersten Schritt der Bezeichnung "nomen" (wie du es genannt hast) die Spalte spec aus dem Datensatz data_19 zu:bigben hat geschrieben: ↑Fr Mai 29, 2020 1:53 pmCode: Alles auswählen
library(magrittr) nomen <- c("Bradypodion atromontanum Branch", "Bradypodion caeruleogule minor", "Bradypodion caffer major", "Bradypodion damaranum lorem ipsum", "Bradypodion dracomontanum", "Brookesia brygooi", "Brookesia confidens", "Brookesia decaryi")
Code: Alles auswählen
nomen <- data_19$spec spec.shortened <- nomen %>% strsplit(" ") %>% lapply(function(s) substr(s, 1, 3)) %>% lapply(function(s) paste(s, collapse = " ")) %>% unlist
Hier kapier ich garnix. Warum braucht man da so viele Zwischenschritte und was bedeuten die ganzen Zeichen?
Im ganzen Satz also:Keine Ahnung!Code: Alles auswählen
head(spec.shortened) # soll das so aussehen?
Die Histogramme werden wahrscheinlich lattice sein.
Code: Alles auswählen
library(lattice)
baeume <- data.frame(hoehe = rnorm(100, 20,5),
spec = as.character(gl(5, 20, labels=
c("Lonchocarpus macrophyllus",
"Lonchocarpus microphyllus",
"Lonchocarpus longiphyllus",
"Tyrannosaurus servus",
"Lonchocarpus angustifolius"))))
Was hat es hier mit hoehe und den Zahlen 100, 20, 5 auf sich?
Code: Alles auswählen
shorten <- function(nomina) unlist(
lapply(strsplit(nomina, " "), function(s) paste0(substr(s, 1, 3), collapse = " ")))
baeume$Species <- shorten(baeume$spec)
histogram(~ hoehe | Species, data = baeume, xlab="Höhe")
Re: nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Hi!
Versuch meinen Code zu verstehen (einen von beiden Code-Blöcken) und wenn das trotz ehrlichem Bemühen nicht klappt, frag gezielt, womit Du nicht klarkommst.
LG,
Bernhard
@Jörg: Ich bin tief beeindruckt
Es war Deiner Frage schwer anzusehen, ob es um eine Hausaufgabe geht oder darum, einen guten Plot zu machen. Meine Antwort ist super leicht an Deine Gegebenheiten anzupassen (also einer meiner beiden Code-Blöcke), aber das geht eben nur, wenn Du Dich mit dem Code befasst und ihn teilweise verstehst.Der code fürs histogramm soll gleich aussehen wie vorher, nur dass statt "data_19"der Datensatz da steht, bei dem die Namen gekürzt wurden.
Fragen dazu, wie man eine Aufgabe angeht, stoßen hier immer auf offene Ohren. Fragen nach fertigem Code abzugeben, finden selten eine direkte Antwort. Das hat etwas mit unserem Selbstverständnis zu tun, dass wir gerne helfen wollen, aber nicht helfen, indem wir vorsagen.
Versuch meinen Code zu verstehen (einen von beiden Code-Blöcken) und wenn das trotz ehrlichem Bemühen nicht klappt, frag gezielt, womit Du nicht klarkommst.
LG,
Bernhard
@Jörg: Ich bin tief beeindruckt
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Sorry Evelyn,
dass Du Deinen Post noch geändert hast, hatte ich zuspät gesehen.
LG,
Bernhard
dass Du Deinen Post noch geändert hast, hatte ich zuspät gesehen.
Ich wollte Dir vormachen, wie es geht, aber Du hattest uns keine Daten geschickt, an denen man das hätte vormachen können. Drum habe ich mir nomen und hoehe ausgedacht, um es daran vorzumachen.
Das Zeichen %>% stammt aus dem Paket magrittr und manche Leute finden, dass Rechnungen mit Zwischenschritten damit einfacher zu lesen sind. Wenn Du damit noch nicht vertraut bist, dann schau Dir nur mein zweites Code-Beispiel ("im ganzen Satz") an. Da habe ich darauf verzichtet und nur Basis-R verwendet.Hier kapier ich garnix. Warum braucht man da so viele Zwischenschritte und was bedeuten die ganzen Zeichen?
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Ich danke euch beiden und versuche mal, das ganze zu verstehen!
Es ist mehr als eine Hausaufgabe, ich brauche das für meine Masterarbeit und es geht um große Datensätze und noch viel komlpiziertere Analysen, die auf mich zukommen. Nur leider hab ich noch nie mit R gearbeitet und muss die Programmiersprache erst lernen, die mir sehr umfangreich erscheint. Ich werde mich also in Zukunft womöglich noch öfter als hilflos erweisen
Ich schau mir eure Antworten nochmal genau an und versuche es zu verstehen und herumzuprobieren. Wenns nicht klappt, komm ich wieder mit konkreteren Fragen.
LG!
Es ist mehr als eine Hausaufgabe, ich brauche das für meine Masterarbeit und es geht um große Datensätze und noch viel komlpiziertere Analysen, die auf mich zukommen. Nur leider hab ich noch nie mit R gearbeitet und muss die Programmiersprache erst lernen, die mir sehr umfangreich erscheint. Ich werde mich also in Zukunft womöglich noch öfter als hilflos erweisen
Ich schau mir eure Antworten nochmal genau an und versuche es zu verstehen und herumzuprobieren. Wenns nicht klappt, komm ich wieder mit konkreteren Fragen.
LG!
Re: nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Hallo Evelyn,
LG,
Bernhard
Das können wir alle nachvollziehen. R ist nicht immer anfängerfreundlich und es kommt mit einer sehr großen Standardbibliothek (batteries included), da ist die Lernkurve anfangs steil. Wir können Dir nur Mut machen, dass es sich lohnt. Jede noch so komische Datenverarbeitungsfrage findet zügig eine gute Antwort, selbst wenn sie lautet "Ich will von allen Wörtern in diesen Sätzen immer nur die ersten drei Zeichen". Und wenn Du das im Studium gelernte weiter nutzen möchtest und auch nach der Masterarbeit Daten auswerten möchtest, ist R immer kostenlos verfügbar und was Du heute lernst, wird auch ganz überwiegend in 20 Jahren noch funktionieren.
Das hört sich so an, als könne es klappen.Ich schau mir eure Antworten nochmal genau an und versuche es zu verstehen und herumzuprobieren. Wenns nicht klappt, komm ich wieder mit konkreteren Fragen.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: nur die ersten 3 Buchstaben der Wörter aus einer Spalte auswählen
Hallo Evelyn,
(In RStudio kann man das Suchfeld im Reiter Help nutzen (ein Reiter vom Fenster unten rechts))
Wir können nun nicht jeden Satz aus den Dokumentationen für Dich wiederkäuen, sondern Du musst schon selber lesen.
(Als Neuling in freier Software muss man sich erst daran gewöhnen, dass eigentlich alles in den Dokumentationen steht und man deshalb viel lesen muss.)
Auch ausprobieren hilft, z.B.:
Das ist ja das Schöne an Programmiersprachen:
sie stellen ein ausreichend umfangreiches Spielzeug dar.
Gruß, Jörg
die Antworten auf diese Fragen finden sich - wie immer bei R - in der Dokumentation:evelyn92 hat geschrieben: ↑Fr Mai 29, 2020 4:34 pm Im ganzen Satz also:
Code: Alles auswählen
baeume <- data.frame(hoehe = rnorm(100, 20,5), spec = as.character(gl(5, 20, labels= c("Lonchocarpus macrophyllus", "Lonchocarpus microphyllus", "Lonchocarpus longiphyllus", "Tyrannosaurus servus", "Lonchocarpus angustifolius"))))
Was hat es hier mit hoehe und den Zahlen 100, 20, 5 auf sich?
Code: Alles auswählen
?rnorm
?gl
Wir können nun nicht jeden Satz aus den Dokumentationen für Dich wiederkäuen, sondern Du musst schon selber lesen.
(Als Neuling in freier Software muss man sich erst daran gewöhnen, dass eigentlich alles in den Dokumentationen steht und man deshalb viel lesen muss.)
Auch ausprobieren hilft, z.B.:
Code: Alles auswählen
rnorm(100, 20,5)
gl(5, 20, labels= c("A","B", "C", "D", "E"))
sie stellen ein ausreichend umfangreiches Spielzeug dar.
Gruß, Jörg