Я хотел бы использовать функцию tapply () для фрейма данных, группируя строки с помощью индексации. Моя проблема в том, что аргумент, который я передал бы функции, - это не один столбец, а пара столбцов. Это связано с тем, что 2 столбца кадра данных представляют точки x-y, которые предназначены как пары. Запуск tapply (фрейм данных, индексы, функция) дает мне ошибку, заключающуюся в том, что длина индексов отличается от длины tapply. Как я могу это решить? Спасибо!
Используйте tapply (dataframe, index, function) в R, передавая в качестве аргумента функции 2 столбца
Ответы (1)
Если необходимо суммировать более одного столбца, используйте aggregate
вместо tapply
(поскольку tapply
работает для одного столбца)
aggregate(.~ indexes, transform(df1, indexes = indexes), FUN = yourfun)
Или другой вариант - by
by(df1, list(indexes), FUN = yourfun)
Или это может быть более гибким с tidyverse
library(dplyr)
df1 %>%
group_by(indexes) %>%
summarise(across(c(x, y), yourfun), .groups = 'drop')
На небольшом воспроизводимом примере
indexes = rep(1:2, c(3, 2))
by(mtcars[1:5, 1:5], indexes, FUN = sum)
person
akrun
schedule
17.04.2021
Большое спасибо, Акрун !! Это решило это.
- person Leoo; 18.04.2021