R跨多个值列

时间:2019-06-26 15:12:08

标签: r

我的数据集看起来像这样-

dataset = data.frame(Site=c(rep('A',6),rep('B',6)),Date=c(rep(c('2019-05-31','2019-04-30','2019-03-31'),4)),Question=c(rep('Q1',3),rep('Q2',3)),Score=runif(12,0.5,1),Average=runif(12,0.5,1))

我想以这样一种方式来spread列:前两列包含SiteQuestion,其余列具有Score_Date和Average_Date

下面是结果表第一行的示例

  Site Question Score_2019.03.31 Score_2019.04.30 Score_2019.05.31 Average_2019.03.31 Average_2019.04.30 Average_2019.05.31
   A       Q1        0.9117566        0.8661078        0.5624139          0.7246694          0.8870703          0.6401099

我尝试使用unite中的spreadtidyr,但距离结果不远

任何输入都会受到赞赏

1 个答案:

答案 0 :(得分:1)

使用tidyverse中的tidyr和dplyr,您可以执行以下操作:

library(tidyverse)
dataset %>% 
  nest(Score, Average, .key = 'value_col') %>% 
  spread(key = Date, value = value_col) %>% 
  unnest(`2019-03-31`, `2019-04-30`, `2019-05-31`, .sep = "_")