楼主: 十五弟
6061 1

[问答] 关于reshape包和reshape2包的一点疑惑 [推广有奖]

  • 1关注
  • 0粉丝

本科生

27%

还不是VIP/贵宾

-

威望
0
论坛币
54 个
通用积分
1.3500
学术水平
9 点
热心指数
9 点
信用等级
2 点
经验
3507 点
帖子
52
精华
0
在线时间
86 小时
注册时间
2015-8-3
最后登录
2023-4-10

楼主
十五弟 发表于 2016-2-2 14:53:08 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
在《R语言实战》这本书中,第七章介绍了通过reshape包分组计算概述统计量的方法,代码如下:
  1. library(reshape)
  2. dstats <- function(x)(c(n=length(x), mean=mean(x), sd=sd(x)))
  3. dfm <- melt(mtcars, measure.vars=c("mpg", "hp", "wt", id.vars=c("am", "cyl"))
  4. cast(dfm, am + cyl + variable~ ., dstats)
复制代码
若用reshape2包做同样的工作,则会产生错误,代码如下:
  1. library(reshape2)
  2. dstats<-function(x)(c(n=length(x), mean=mean(x), sd=sd(x)))
  3. dfm<-melt(mtcars, measure.vars=c("mpg", "hp", "wt"),id.vars=c("am", "cyl"))
  4. dcast(dfm, am + cyl + variable ~., dstats)
复制代码
会产生如下错误提示:
  1. Error in structure(ordered, dim = ns) :
  2.   dims [product 18] do not match the length of object [54]
复制代码
区别在于reshape2包中没有cast()函数,而是替代为acast()或dcast(),问题来了,reshape包的cast()函数与reshape2包的dcast()函数有何区别,问题在哪?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:reshape Shape APE RES Library library 统计

沙发
释天宝 发表于 2016-4-14 15:36:13
区别在于dstats()返回一个向量,dcast()似乎只能应用sum()之类的返回单一值的函数。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 20:45