首页 > 解决方案 > 转换数据框

问题描述

给定一个名为“Table”的数据框(带有 value1、value2、...、value100):

 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)中的错误:找不到对象''

你能帮助我如何获得我想要的这种格式吗?

标签: r

解决方案


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))))

只需将2in更改c(rep(paste0("value", 1:2)))为 finalvalue是什么。


推荐阅读