У меня есть data.frame с 3 столбцами, каждый из которых можно рассматривать как фактор. Я хотел бы вычислить некоторую статистику на data.frame и сохранить ее в новом фрейме. Чтобы быть более конкретным, у меня есть следующие поля:Векторизованные вычисления метаданных на основе нескольких столбцов на R data.frame
obs, len, src
A 10 X
B 10 Y
Я хотел бы вычислить разбивку каждого источника на каждой длине (т.е. какой процент наблюдений из источника X, которые имеют длину 10 являются «А» , «B» и т. Д.)
Очевидным подходом к этому является использование двух циклов для повторения по длинам и источникам, а затем использования nrow() и count() для получения значений, которые мне нужно вычислить , так:
relevant_subset <- data[data$src==source & data$len==length,]
breakdown_info <- count(relevant_subset)
breakdown_info$frac <- breakdown_info$freq/nrow(relevant_subset)
Есть ли способ избежать использования цикла double for и использовать более v экторированный подход? Есть ли разумный способ предварительного выделения нового фрейма, который будет содержать измененный breakdown_info для каждой длины и источника?
Вы пробовали 'table'? – asb