我的数据集看起来像这样-
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
列:前两列包含Site
和Question
,其余列具有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
中的spread
和tidyr
,但距离结果不远
任何输入都会受到赞赏
答案 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 = "_")