【发布时间】:2012-06-19 17:48:39
【问题描述】:
我正在尝试使用“value=”参数。它没有做我想要的。 下面的示例以更简单的格式复制了该问题。我想知道“value=”参数是干什么用的。
我已经将一个数据框融合为长格式,其中包含我的所有因子和一个取值 0、1、2、3、4 的单个数值变量。然后,我创建了第二个值为 0,1 的值列来细化原始值列。 当我尝试聚合时,只要它是原始值列,Cast 就可以发挥作用。
D = data.frame(id = 1:10,
grp = rep(c("A","B"),5),
variable = "var",
value = rnorm(10,0,1),
value2 = rnorm(10,10,2))
cast(D, grp~., mean) #works fine
cast(D, grp~., value = "value2", mean) #does not work
如果这是不可能的,那么我将不得不处理我的数据。
【问题讨论】:
-
通过添加
value2列,您的数据将不再熔化。你需要重新melt,然后subset。请参阅my answer 中的“更新”部分了解我的意思。 -
你说的很对。我做了融化,然后根据原始值添加了 1/0 的附加值列。当我今晚晚些时候有机会时,我会看看答案并解决它。感谢您的回复。
-
供您参考,来自
reshape2的dcast似乎以您拥有的方式处理数据。dcast(D, grp ~ ., mean)工作正常,dcast(D, grp ~ ., value.var="value2", mean)也是如此。 -
谢谢,你会推荐 reshape2 而不是 reshape 吗?其他方面的一般功能是否几乎相同(例如融化)
-
大部分功能似乎都是一样的,我认为(但找不到来源来验证这一点)
reshape2被视为reshape的继任者,但reshape被保留是因为它有一些不同的功能。 The initial announcement 的reshape2包中提到 此版本以牺牲功能为代价提高速度,因此我将其重命名为reshape2以避免给现有用户带来问题。根据用户反馈,我可能会重新引入其中一些功能。