Nummerierung von Beobachtungen

Allgemeine Fragen zur Programmierung mit R.

Nummerierung von Beobachtungen

Beitragvon Martha » Mi 9. Okt 2019, 08:33

Hallo!

Ich habe einen Datensatz mit 1974 Zeilen, aber nur 642 unterschiedlichen Objekten. Für jedes Objekt wurden mehrere Daten erhoben, daher gibt es mehrere Zeilen pro Objekt. Die Objekte sind alphanumerisch benannt. Ich würde gern jedem eine einzelne Nummer zuweisen. Also dass Objekt A1 = 1, ... , B1 = 23 etc. (sind nur Beispiele).
Ich habe es so versucht:
Code: Alles auswählen
levels(AllData3$Tiere_num) <- c(1:642)

AllData3 ist der Datensatz, Tiere_num enthält bisher die alphanumerischen Bezeichnungen und soll jetzt reine numerische Werte erhalten.

Ich hoffe ich konnte in etwa beschreiben, was ich vor habe...

Danke für die Hilfe!

Liebe Grüße
Martha
Martha
 
Beiträge: 11
Registriert: Mo 29. Jul 2019, 16:30
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Nummerierung von Beobachtungen

Beitragvon databraineo » Fr 11. Okt 2019, 08:02

Hallo Martha,

also so eine richtig schöne Lösung ist mir noch nicht eingefallen, aber dafür zwei Möglichkeiten, die funktionieren :?

1. Umwandeln in einen Faktor
Du wandelst die alphanumerische Bezeichnung (strID) zuerst in einen Faktor um und setzt dann die levels auf Zahlen. Falls Du nicht mit Faktoren weiterarbeiten möchtest (die sind manchmal etwas tricky), wandelst Du den Faktor wieder in einen numerischen Vektor um.
Code: Alles auswählen
# Dummy-Datensatz
df <- data.frame(strID = c("A1","A1","A2","A3","A3","B1","B1","B1"),
                 stringsAsFactors = FALSE)
# in Faktor umwandeln
df$numID <- as.factor(df$strID)
# die Level der Faktoren auf Zahlen setzen
levels(df$numID) <- 1:length(levels(df$numID))
# umwandeln in einen numerischen Vektor
df$numID <- as.numeric(df$numID)


2. Mapping-Tabelle
Du bildest eine Mapping-Tabelle mit den eindeutigen Einträgen
Code: Alles auswählen
# Dummy-Datensatz
df <- data.frame(strID = c("A1","A1","A2","A3","A3","B1","B1","B1"),
                 stringsAsFactors = FALSE)
# Mapping-Tabelle erstellen
IDMap <- data.frame(strID = unique(df$strID),
                    numID = 1:length(unique(df$strID)),
                    stringsAsFactors = FALSE)
# Mapping-Tabelle mit ursprünglicher Tabelle verbinden
df <- merge(df,IDMap)



Wenn ich so drüber nachdenke, ist vermutlich aber die einfache Umwandlung in einen Faktor die sauberste, also
Code: Alles auswählen
df$strID <- as.factor(df$strID)

Dafür musst Du aber wissen, wie man in R mit Faktoren umgeht. was nicht immer ganz leicht ist.

Viele Grüße,
Holger
Lasst uns helfen, dass Menschen mittels Datenanalyse intelligente Entscheidungen treffen

Website: http://www.databraineo.de
Twitter: @databraineo, https://twitter.com/databraineo
Facebook-Gruppe: https://www.facebook.com/groups/datascience.de/
databraineo
 
Beiträge: 5
Registriert: Fr 10. Mai 2019, 12:41
Wohnort: Bonn
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post

Re: Nummerierung von Beobachtungen

Beitragvon Martha » Fr 11. Okt 2019, 08:28

Vielen Dank für deine Antwort! :)
Ich werde mich nachher direkt mal dran setzten und das ausprobieren. Merci!
Martha
 
Beiträge: 11
Registriert: Mo 29. Jul 2019, 16:30
Danke gegeben: 0
Danke bekommen: 0 mal in 0 Post


Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron