Ich habe eine reproduzierbare df
wo gibt es Wiederholungsbemusterungen von einer Person. Für jede Probe verfolge ich die Reihenfolge, in der die Proben entnommen und die Medien verwendet wurden (A oder B).Erstellen einer neuen Spalte basierend auf zwei Spalten in einem Datenrahmen
dat <- data.frame(IndID = factor(c(1,1,2,2,2,3,3)),
Order = c(1,2,1,2,3,1,2),
Media = factor(c("A", "B", "B","A","B","A", "A")))
dat
IndID Order Media
1 1 1 A
2 1 2 B
3 2 1 B
4 2 2 A
5 2 3 B
6 3 1 A
7 3 2 A
Ich möchte eine neue Spalte machen, die die Medien und eine Zahl enthält, die in jeder Ebene der Medien die Sampling-Auftrag bedeutet. Sagt anders, Gruppierung von IndID und Media, ich möchte eine neue Spalte machen, die die Proben bestellt. Wenn es nur zwei Samples in zwei unterschiedlichen Medien gibt (wie IndID 1), wäre der neue Wert für jede Person "A1" und "B1". Wenn zwei Samples von demselben Medium stammen, müssen die neuen Werte "B1" und "B2" in einer Reihenfolge sein, die der Sampling-Reihenfolge folgt.
die oben genannten Daten eingewilligt, Ich versuche, die folgende Spalte erstellen
dat$WantThis <- c("A1", "B1","B1", "A1","B2", "A1", "A2")
IndID Order Media WantThis
1 1 1 A A1
2 1 2 B B1
3 2 1 B B1
4 2 2 A A1
5 2 3 B B2
6 3 1 A A1
7 3 2 A A2
Ich habe das dplyr
Paket zu verwenden versucht, aber die Punkte auf keine Verbindung herstellen kann, was als das zweite Argument paste
einbezogen werden.
dat2 <- as.data.frame(dat %>% group_by(IndID, Media) %>% mutate(MediaOrder = paste0(Media, ????)))
Vielen Dank im Voraus. Ich freue mich über Vorschläge.
'dat%>% group_by (indid, Medien)%>% mutieren (WantThis = paste0 (Medien, row_number()))' wahrscheinlich –
'dat2 <- dat %>% group_by (indid, Medien)%>% mutieren (WantThis = paste0 (Media, row_number())) 'generiert' Fehler im Rang (x, ties.method = "first", na.last = "keep"): Argument "x" fehlt, ohne Default' –
Welche 'dplyr' Version hast du? Es funktioniert gut, Feind mir. Sie könnten versuchen muate (WantThis = paste0 (Media, 1: n())) 'anstelle vielleicht –