首页 > 解决方案 > 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这样的方式列,前两列包含SiteandQuestion其余列具有 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& spreadfromtidyr但与结果相去甚远

任何输入将不胜感激

标签: r

解决方案


使用 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 = "_")

推荐阅读