mam ramki danych tak:R - Jak dodać indeks wiersza do ramki danych, w oparciu o kombinację czynników
df <- data.frame(
Dim1 = c("A","A","A","A","A","A","B","B"),
Dim2 = c(100,100,100,100,200,200,100,200),
Value = sample(1:10, 8)
)
Dim1 Dim2 Value
1 A 100 3
2 A 100 6
3 A 100 7
4 A 100 4
5 A 200 8
6 A 200 9
7 B 100 2
8 B 200 10
(kolumna Wartość jest tylko w celu zilustrowania, że każdy rząd jest punkt pomiarowy , rzeczywista wartość nie ma znaczenia.) Ostatecznie, co chciałbym zrobić, to wykreślić wartości w stosunku do ich indeksu w ramach podzbioru zdefiniowanego przez Dim1 i Dim2. Z tego powodu, myślę, że trzeba dołączyć nową kolumnę zawierającą indeksy, który wyglądałby następująco (dodane puste linie między wierszami, aby to oczywiste co podzbiory są):
Dim1 Dim2 Value Index
1 A 100 1 1
2 A 100 9 2
3 A 100 4 3
4 A 100 10 4
5 A 200 7 1
6 A 200 3 2
7 B 100 5 1
8 B 200 8 1
Jak mogę to zrobić elegancko w R? Pochodzę z Pythona, a moim domyślnym podejściem jest zapętlanie się przez kombinacje Dim1 & Dim2, śledzenie liczby wierszy w każdym z nich i przypisywanie do tej pory maksimum napotkanego w każdym wierszu. Próbowałem to rozgryźć, ale mój wektor-fu jest słaby.
Czy to, co chce zrobić? 'df $ index <- c (1,2,3,4,1,2,1,1)' –
@Jdbaba W tym konkretnym przykładzie tak. Zasadniczo nie, ponieważ potrzebuję abstrakcyjnej funkcji, która będzie działać z większym obiektem data.frame z większą liczbą zmiennych czynnikowych, itp. – user2296603
Ponieważ odpowiedź na to pytanie była pozytywna, czy istnieje jakiś sposób, aby tytuł mógł być bardziej pouczający? Dla mnie wiedza, jak to zrobić ma bardzo podstawowe znaczenie i chciałabym, aby ludzie mogli ją znaleźć. – user2296603