Il mio problema deriva dal fatto che ho già identificato le righe che desidero selezionare per il livello di un fattore, utilizzando un codice diverso. Fondamentalmente quello che ho è questo:Seleziona riga per livello di un fattore
df<-data.frame(ID=c("A","B","C"), pos=c(1,3,2))
df2<-data.frame(ID=c(rep("A",5),rep("B",5),rep("C",5)),obs=c(1:15))
In df, pos corrisponde all'indice della riga ma all'interno di un unico livello di ID, non in tutto dataframe DF2. Quindi sto cercando un modo per selezionare le righe per ogni ID secondo l'indice corretto (quindi il loro numero di riga all'interno del livello di ciascun fattore di df2).
Questo sarebbe poi darmi:
df3<-data.frame(ID=c("A","B","C"), obs=c(1,8,12))
Funziona perfettamente, grazie! –
Buona idea. Invece di creare un set di dati intermedi, si potrebbe fare 'df2 $ pos <- sequence (lengths (split (df2 $ ID, df2 $ ID))' e quindi basta 'unire (df, df2)' I'd argomentare che quella via non è molto più brutta di dplyr. – Frank
Ancora meglio (e più veloce) con questa modifica. –