Используя dplyr
и tidyr
, можно получить данные в длинном формате, separate
- данные в два столбца на основе ":"
и получить данные в широком формате.
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -typ0) %>%
separate(value, c("value", "col"), sep = ":") %>%
select(-name) %>%
pivot_wider(names_from = value, values_from = col) %>%
type.convert(as.is = TRUE)
# A tibble: 2 x 3
# typ0 Overworked notpaid
# <chr> <int> <chr>
#1 sd 5 true
#2 dff 5 false
Используя базу R, мы можем сделать
names(df)[-1] <- sub(":.*", "", df[1, -1])
df[-1] <- lapply(df[-1], function(x) sub(".*:", "", x))