【发布时间】:2018-04-19 21:40:13
【问题描述】:
我正在尝试获取一个数据框并将其转换为包含特定列的数据框列表。
dfs <- data.frame(c('apple', 'apple', 'apple', 'apple'), c('pear','pear','pear','pear'),c('5.30','5.50','5.12','5.63'),c('2.12','2.30','2.40','2.13'),c('5.31','5.55','5.20','5.63'),c('2.15','2.35','2.44','2.15'))
names(dfs) <- c('apple','pear','price_apple','price_pear','ask_apple','ask_pear')
> dfs
apple pear price_apple price_pear ask_apple ask_pear
1 apple pear 5.30 2.12 5.31 2.15
2 apple pear 5.50 2.30 5.55 2.35
3 apple pear 5.12 2.40 5.20 2.44
4 apple pear 5.63 2.13 5.63 2.15
最终目标将是一个包含第一项“苹果”和第二项“梨”的列表。价格和要价变量将是它们各自列表元素的数据框中的列。
以下建议仅适用于样本数据,但无法推断到真实数据集:
tmp <- reshape(dfs[-(1:2)], sep="_", direction="long", timevar="fruit", varying=TRUE)
split(tmp, tmp$fruit)
但返回错误:
猜测错误(变化): 无法从名称中猜出时变变量
reshapeLong 中的错误(数据,idvar = idvar,timevar = timevar,varying = varying,: “可变”参数的长度必须相同
【问题讨论】:
-
您的错误可能是由于 1) 具有不在模式“variable_time”中的变量,因此
reshape无法通过指定的分隔符 (sep="_") 猜测模式。 2)您有一个时间/组存在但另一个不存在的值。 IE。你有price_apple/pearask_apple/pear然后只有othervar_apple没有pear组。但如果没有失败的数据示例,我只是在猜测如何解决它。