У меня есть набор данных в длинном формате, где я складываю значения для другой группы.Некоторые переменные являются факторными переменными и должны быть сохранены в результате.
mtcars$model <- as.factor(rownames(mtcars))
longmtcars <- rbind(mtcars, mtcars, mtcars)
longmtcars$vs <- ifelse(longmtcars$vs == 1, "Yes", "No")
result <- longmtcars %>%
group_by(factor(model)) %>%
summarise_if(is.numeric, sum)
result
# A tibble: 32 x 11
`factor(model)` mpg cyl disp hp drat wt qsec am gear carb
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 AMC Javelin 45.6 24 912 450 9.45 10.3 51.9 0 9 6
2 Cadillac Fleetwood 31.2 24 1416 615 8.79 15.8 53.9 0 9 12
3 Camaro Z28 39.9 24 1050 735 11.2 11.5 46.2 0 9 12
4 Chrysler Imperial 44.1 24 1320 690 9.69 16.0 52.3 0 9 12
5 Datsun 710 68.4 12 324 279 11.6 6.96 55.8 3 12 3
Мое текущее, немасштабируемое решение
#ugly solution
vsvar <- longmtcars[1:32, "vs"]
result <- cbind(result, vsvar)
result
factor(model) mpg cyl disp hp drat wt qsec am gear carb vsvar
1 AMC Javelin 45.6 24 912.0 450 9.45 10.305 51.90 0 9 6 No
2 Cadillac Fleetwood 31.2 24 1416.0 615 8.79 15.750 53.94 0 9 12 No
3 Camaro Z28 39.9 24 1050.0 735 11.19 11.520 46.23 0 9 12 Yes
Это правильно, но действительно ужасно, и я буду использовать его вблестящее приложение, которое вызовет проблемы, поэтому делать это текущим способом не вариант.Есть ли решение «все в одном»?Это также можно сделать с помощью data.table, но я не слишком знаком с ним.