Что является самым простым способом подсчета вхождения элемента в вектор или кадр данных на каждом grouop?
Я не имею в виду просто подсчет общего числа (как задают другие вопросы о стеке), но давая разные числа каждому успешному событию.R подсчет вхождения элемента по группам
, например, для этого простого dataframe: (но я буду работать с dataframes с большим количеством столбцов)
mydata <- data.frame(A=c("A","A","A","B","B","A", "A"))
я нашел это решение:
cbind(mydata,myorder=ave(rep(1,nrow(mydata)),mydata$A, FUN=cumsum))
и вот результат:
A myorder
A 1
A 2
A 3
B 1
B 2
A 4
A 5
Нет ли какой-либо одной команды для этого ?. Или использовать специализированный пакет?
Я хочу, чтобы он позже использовал функцию распространения tidyr().
Мой вопрос не то же самое, чем Is there an aggregate FUN option to count occurrences? , потому что я не хочу знать общее количество occurrencies в конце, но кумулятивных occurencies до каждого элемента.
ОК, моя проблема является немного более сложным
mydata <- data.frame(group=c("x","x","x","x","y","y", "y"), letter=c("A","A","A","B","B","A", "A"))
Я знаю только, чтобы решить первый пример, который я написал выше. Но что происходит, когда я хочу его также второй переменной группировки? что-то вроде вхождения (письмо) по группе.
group letter "occurencies within group"
x A 1
x A 2
x A 3
x B 1
y B 1
y A 1
y A 2
Я нашел способ с
пр (Rep (1, nrow (MYDATA)), список (MYDATA $ группы, MYDATA $ письмо), FUN = cumsum)
хотя это должно быть чем-то легче.
этот вопрос задавали много раз ... пожалуйста, прежде чем –
поиску Это не то же самое, потому что я не хочу знать общее количество событий в конце, но совокупные события до каждого элемента. – skan