Переместить часть значений ячеек в имена столбцов данных. - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть приведенный ниже кадр данных:

typ0<-c("sd","dff")
typ1<-c("Overworked:5","Overworked:5")
typ2<-c("notpaid:true","notpaid:false")
df<-data.frame(typ0,typ1,typ2)

, и я хочу использовать в качестве имен столбцов все, что существует до : при удалении этой части из ячеек. Новый кадр данных будет выглядеть так:

    typ0 Overworked notpaid
1   sd          5    true
2  dff          5    true

1 Ответ

1 голос
/ 07 февраля 2020

Используя 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...