Как изменить форму данных по дате в R - PullRequest
1 голос
/ 28 апреля 2020

У меня есть следующий фрейм данных:

df1 <- data.frame(
  date = c("14-Mar-20", "14-Mar-20", "14-Mar-20", "15-Mar-20", "15-Mar-20", "15-Mar-20"),
  status = c("new", "progress", "completed", "new", "progress", "completed"),
  count = c("1", "2", "3", "4", "5", "6"),
  stringsAsFactors = FALSE
)

Я хочу преобразовать его в следующий формат:

enter image description here

Как я могу сделать это? Я пытаюсь использовать функцию «расплавить», но не могу добиться успеха!

Ответы [ 3 ]

2 голосов
/ 28 апреля 2020

dcast от data.table:

setDT(df1)
dcast(df1, date ~ status, value.var = 'count')
2 голосов
/ 28 апреля 2020

Вот базовое решение R с использованием reshape

res <- reshape(df1,direction = "wide",idvar = "date",timevar = "status")

> res
       date count.new count.progress count.completed
1 14-Mar-20         1              2               3
4 15-Mar-20         4              5               6
2 голосов
/ 28 апреля 2020

Мы можем использовать pivot_wider от tidyr

library(dplyr)
library(tidyr)
df1 %>% 
   pivot_wider(names_from = status, values_from = count)
# A tibble: 2 x 4
#  date      new   progress completed
#  <chr>     <chr> <chr>    <chr>    
#1 14-Mar-20 1     2        3        
#2 15-Mar-20 4     5        6        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...