R распространяется на несколько столбцов значений - PullRequest
0 голосов
/ 26 июня 2019

Мой набор данных выглядит следующим образом -

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но нигде не близко к результату

Любые входные данные будут высоко оценены

1 Ответ

1 голос
/ 26 июня 2019

Используя tidyr и dplyr из tidyverse, вы можете сделать следующее:

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 = "_")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...