R分布在多个值列中

R分布在多个值列中,r,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)) 我希望以这样一种方式展开专栏:前两列包含站点和问题,其余的列包含得分日期和平均日期 下面是一个

我的数据集如下所示-

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))
我希望以这样一种方式展开专栏:前两列包含站点和问题,其余的列包含得分日期和平均日期

下面是一个示例,说明了结果表的第一行是什么样子

  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
我试着从tidyr开始使用unite&spread,但效果并不理想


非常感谢您使用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 = "_")

非常感谢。有没有一种方法可以在不硬编码日期值的情况下执行相同的操作?我这样问是因为如果日期发生变化,那么这将不起作用。如果你知道你将保留站点和问题变量,你可以尝试以下unnest.preserve=cSite,question,.sep=\u一个快速跟进的问题:我在另一个数据集上尝试了您的解决方案,但这一次,我在nest说所有嵌套列必须具有相同数量的元素后出错。你知道为什么吗?是否有办法克服这个问题?谢谢,我不确定为什么是nest造成的。当特定行的一列中的嵌套数据帧的结构与另一列中的嵌套数据帧的结构不同时,在取消测试后可以看到此错误。例如,1x2数据帧和1x3数据帧。您应该更仔细地检查这个新数据集,以查找可能导致这种行为的数据输入错误,或者发布一个包含更多数据的新问题。我在这里发布了一个关于此错误的新问题-