Chcę scalić dwie ramki danych zachowując oryginalną kolejność rzędów jednego z nich (df.2
w poniższym przykładzie).Scalanie dwóch ramek danych przy zachowaniu oryginalnego rzędu
Oto kilka przykładowych danych (wszystkie wartości z class
kolumny są zdefiniowane w obu ramkach danych):
df.1 <- data.frame(class=c(1,2,3), prob=c(0.5,0.7,0.3))
df.2 <- data.frame(object=c('A','B','D','F','C'), class=c(2,1,2,3,1))
Jeśli zrobić:
merge(df.2,df.1)
Wynik jest:
class object prob
1 1 B 0.5
2 1 C 0.5
3 2 A 0.7
4 2 D 0.7
5 3 F 0.3
Jeśli dodaję sort=FALSE
:
merge(df.2,df.1, sort=F)
Wynik jest:
class object prob
1 2 A 0.7
2 2 D 0.7
3 1 B 0.5
4 1 C 0.5
5 3 F 0.3
Chciałbym to:
class object prob
1 2 A 0.7
2 1 B 0.5
3 2 D 0.7
4 3 F 0.3
5 1 C 0.5
Problem nie jest dobrze zdefiniowany. Co się stanie, jeśli w połączonym wyniku uzyskasz więcej lub mniej wierszy niż df.2? – agstudy
Niemożliwe, ponieważ używam df.2 jako pierwszej zmiennej w funkcji scalania ... – DJack
Nie, to jest złe. wciąż źle określone. weź sprawę, że masz klasę w df; 2, która nie istnieje w df.1. Na przykład: 'df.2 <-data.frame (object = c ('A', 'B', 'D', 'F', 'C'), class = c (2,1,2,4,1)) ' – agstudy