加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用每个()与reshape2 :: dcast聚合数据

发布时间:2020-12-14 04:52:34 所属栏目:百科 来源:网络整理
导读:我通常使用reshape包来聚合一些数据(呃),通常用plyr,因为每个都有超级棒的功能.最近,我收到了一个建议,切换到reshape2并尝试一下,现在我似乎无法再使用每个魔法. 重塑 m - melt(mtcars,id.vars = c("am","vs"),measure.vars = "hp") cast(m,am + vs ~ variab
我通常使用reshape包来聚合一些数据(呃),通常用plyr,因为每个都有超级棒的功能.最近,我收到了一个建议,切换到reshape2并尝试一下,现在我似乎无法再使用每个魔法.

重塑

> m <- melt(mtcars,id.vars = c("am","vs"),measure.vars = "hp")
> cast(m,am + vs ~ variable,each(min,max,mean,sd))
  am vs hp_min hp_max   hp_mean    hp_sd
1  0  0    150    245 194.16667 33.35984
2  0  1     62    123 102.14286 20.93186
3  1  0     91    335 180.83333 98.81582
4  1  1     52    113  80.57143 24.14441

reshape2

require(plyr)
> m <- melt(mtcars,measure.vars = "hp")
> dcast(m,sd))
Error in structure(ordered,dim = ns) : 
  dims [product 4] do not match the length of object [16]
In addition: Warning messages:
1: In fs[[i]](x,...) : no non-missing arguments to min; returning Inf
2: In fs[[i]](x,...) : no non-missing arguments to max; returning -Inf

我没有心情去梳理它,因为我之前的代码就像一个重塑的魅力,但我真的很想知道:

>是否有可能与dcast一起使用?
>是否建议使用reshape2?重塑已弃用?

解决方法

你的第一个问题的答案似乎是否定的.引自?reshape2 ::: dcast:

If the combination of variables you supply does not uniquely identify
one row in the original data set,you will need to supply an
aggregating function,fun.aggregate. This function should take a
vector of numbers and return a single summary statistic.

看看Hadley的reshape2的github页面表明他知道这个功能被删除了,但似乎认为在plyr中做得更好,大概是这样的:

ddply(m,.(am,vs),summarise,min = min(value),max = max(value),mean = mean(value),sd = sd(value))

或者如果你真的想继续使用每个:

ddply(m,function(x){each(min,sd)(x$value)})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读