Сгруппируйте и создайте три новых столбца по условию [Low, Hit, High] (эквивалент панд в R)
Вот совершенно другой подход, использующий r-language dplyover::over()
с именованным списком перекодирования. Часть dplyr перекодирования немного более tibble трудоемка по сравнению с r-language cut()
, но нам не нужно прямоугольное rstats преобразование данных с pivot_wider()
.
library(dplyr)
library(dplyover) # https://timteafan.github.io/dplyover/
# disclaimer: I'm the maintainer and its not on CRAN
df %>%
group_by(Type) %>%
summarise(over(list(Low = c(-Inf, -0.25),
Hit = c(-0.25, 0.25),
High = c(0.25, Inf)),
~ sum(Value > .x[1] & Value < .x[2])
)
)
#> # A tibble: 2 × 4
#> Type Low Hit High
#>
#> 1 MLP 2 1 0
#> 2 RF 1 1 1
Мы rbindlist также можем использовать r cut()
для части перекодирования, а r затем использовать dplyover::over()
.
df %>%
mutate(Value = cut(Value,
breaks = c(-Inf, -0.25, 0.25, Inf),
labels = c("Low", "Hit", "High"))) %>%
group_by(Type) %>%
summarise(over(unique(.$Value),
~ sum(Value == .x)
)
)
#> # A tibble: 2 × 4
#> Type Low Hit High
#>
#> 1 MLP 2 1 0
#> 2 RF 1 1 1
Данные r-language ОП
df = data.frame(Type=c("RF", "RF", "RF", "MLP", "MLP", "MLP"),
Value=c(-1.5, -0.1, 1.7, 0.2, -0.7, -0.6))
Создана 15 октября 2022 г. reprex package (v0.3.0)
r
dplyr
data.table
Сгруппируйте и создайте три новых столбца по условию [Low, Hit, High] (эквивалент панд в R)
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.