在R中具有多个ID和变量的Dcast

问题描述 投票:0回答:2

我想解散具有多个ID和多个融化变量且被卡住的data.frame。

这是我的数据框的外观:

enter image description here

这是理想的结果

enter image description here

我尝试过:

unmelted <- dcast(setDT(melted), Id, Date, Type ~  Score, Time, value.var = c("Score","Time"), sep = "")

unmelted <- melted %>%
   group_by(Id, Date, Type) %>%
   unite(variable, Score, Time)%>%
   spread(Score, Time, -Id, Date, Type) 

我无法使用pivot_wider。

非常感谢任何指导。

r melt spread dcast
2个回答
1
投票
library(dplyr)
library(tidyr) #version 1.0.0

df1 %>% 
  group_by(Type) %>% 
  mutate(name_x = row_number()) %>% 
  pivot_wider(id_cols = c("id","Date", "Type"), 
              names_from = c("name_x"), 
              values_from = c("Score", "Time"))

#> # A tibble: 3 x 11
#> # Groups:   Type [3]
#>      id Date  Type  Score_1 Score_2 Score_3 Score_4 Time_1 Time_2 Time_3 Time_4
#>   <dbl> <chr> <chr>   <dbl>   <dbl>   <dbl>   <dbl> <chr>  <chr>  <chr>  <chr> 
#> 1     1 2001~ aaa       123     456     789      NA 12:12  13:12  14:12  <NA>  
#> 2     2 2001~ ddd       113     145      NA      NA 15:12  16:12  <NA>   <NA>  
#> 3     3 2001~ bbb       789     145     113     145 17:12  18:12  19:12  20:12

数据:] >>

df1 <- data.frame(id=c(1,1,1,2,2,3,3,3,3),
                  Date = c(rep("2001-01-13", 3), rep("2001-01-16", 2), rep("2001-01-18", 4)),
                  Type = c(rep("aaa",3), rep("ddd", 2), rep("bbb",4)),
                  Score = c(123,456,789,113,145,789,145,113,145),
                  Time = paste0(12:20, ":12"),
                  stringsAsFactors = F)

1
投票

我们可以使用

© www.soinside.com 2019 - 2024. All rights reserved.