Преобразовать фрейм данных - PullRequest
0 голосов
/ 21 мая 2018

Имея такой фрейм данных с именем «Таблица» (со значением1, значением2, ..., значением100):

 Month         Currency      value1    value2     
  Jan            euro         210       200

  Jan            dollar       120       300

  Feb            euro         100       280

  Feb            dollar       200       150

Я хочу получить это:

              value1             value2
 Month    euro    dollar     euro      dollar 
  Jan     210      120       200        300

  Feb     100      200       280        150

Я попробовал это для того, чтобы создать имена столбцов для евро и доллара: Table <- spread(Table,Currency).

Но я получил ошибку:

Ошибка в overscope_eval_next (overscope, expr): object ''не найдено

Можете ли вы помочь мне, как я могу получить такой формат, который я хочу?

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Вы можете сделать это с пакетом reshape2.

library(reshape2)

dcast(melt(Table, id.vars = c("Month", "Currency")), Month ~ Currency + variable)
#  Month dollar_value1 dollar_value2 euro_value1 euro_value2
#1   Feb           200           150         100         280
#2   Jan           120           300         210         200

Данные

Table <- read.table(text = "
Month         Currency      value1    value2     
  Jan            euro         210       200
  Jan            dollar       120       300
  Feb            euro         100       280
  Feb            dollar       200       150
", header = TRUE)
0 голосов
/ 21 мая 2018

data.table, вероятно, будет самым простым способом:

dat <- read.table(text= " Month         Currency      value1    value2     
  Jan            euro         210       200

           Jan            dollar       120       300

           Feb            euro         100       280

           Feb            dollar       200       150", header = TRUE)

library(data.table)
dcast(setDT(dat), Month ~ Currency, value.var = c(rep(paste0("value", 1:2))))

Просто измените 2 в c(rep(paste0("value", 1:2))) на тот, какой будет окончательный value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...