给定一个名为"表"的数据框。像这样(使用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)出错:对象&#39;&#39;找不到
你能帮助我如何获得我想要的格式吗?
答案 0 :(得分:0)
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
即可。
答案 1 :(得分:0)
您可以使用包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)