Mam ramki danych R:Compute liczenia zmienna w dataframe
a <- 1:12
list <- c(rep("x",3),rep("y",4),rep("z",3),rep("x",2))
data <- data.frame(a,list)
data
a list
1 x
2 x
3 x
4 y
5 y
6 y
7 y
8 z
9 z
10 z
11 x
12 x
Chcę utworzyć nową kolumnę, która rozpoczyna odliczanie od 1 za każdym razem wartość zmian „list”, czyli w tym przykładzie:
b <- c(1:3,1:4,1:3,1:2)
data <- data.frame(a,list,b)
Daleki jestem od bycia ekspertem od R i nie mogę dla mojego życia wypracować skutecznego sposobu robienia tego. Moim głównym problemem wydaje się być, że dowolna wartość "listy" może w każdej chwili wrócić, ale nie ma reguły na długość bloków jednej wartości. Czy ktoś ma jakieś pomysły? Dzięki!
Wystarczy komentarz: często jest to dobry pomysł, aby nie używać nazw wbudowanych (jak 'data' lub' list') jako nazwy zmiennych - jeśli później będziesz chciał użyć funkcji 'list()', możesz napotkać bardzo dziwne błędy. –
Rzeczywiście, większość ludzi powstrzymywałaby się od dzwonienia do swojego "psa"! na przykład. –
Tak, masz rację. Będę o tym pamiętać od teraz. –