楼主: 童小军
2772 8

[问答] reshape包cast后的变量在fix前后的str不同,为什么?? [推广有奖]

  • 1关注
  • 4粉丝

已卖:447份资源

博士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
359 个
通用积分
11.9471
学术水平
32 点
热心指数
31 点
信用等级
19 点
经验
7155 点
帖子
200
精华
0
在线时间
213 小时
注册时间
2012-9-19
最后登录
2024-4-24

楼主
童小军 发表于 2013-7-28 22:59:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. t1<-read.csv('t1.csv')
  2. library(reshape)
  3. temp1<-melt(t1,id=c('year','Bdcd'))
  4. temp2<-cast(temp1,year+Bdcd~variable,mean)
  5. str(temp2)
  6. fix(temp2)
  7. temp3<-melt(temp2,id=c("year"))
  8. temp4<-cast(temp3,year~variable,c(mean,median,sd),na.rm=T)
复制代码

str(t1)
'data.frame':   45846 obs. of  3 variables:
$ year: int  2008 2008 2008 2008 2008 2008 2008 2008 2008 2008 ...
$ Bdcd: int  112001 112001 112001 112001 112001 112001 112001 112001 112001 112001 ...
$ age : num  0.589 0.597 0.6 0.603 0.605 0.608 0.616 0.619 0.622 0.625 ...
> temp1<-melt(t1,id=c('year','Bdcd'))
> temp2<-cast(temp1,year+Bdcd~variable,mean,na.rm=T)
> str(temp2)
List of 3
$ year: int [1:618] 2007 2007 2008 2008 2008 2008 2008 2008 2008 2008 ...
$ Bdcd: int [1:618] 122000 122001 112001 112002 112003 112004 112005 112006 122000 122001 ...
$ age : num [1:618] 0.1569 0.0807 0.4268 0.3747 0.227 ...
- attr(*, "row.names")= int [1:618] 1 2 3 4 5 6 7 8 9 10 ...
- attr(*, "idvars")= chr [1:2] "year" "Bdcd"
- attr(*, "rdimnames")=List of 2
  ..$ :'data.frame':    618 obs. of  2 variables:
  .. ..$ year: int [1:618] 2007 2007 2008 2008 2008 2008 2008 2008 2008 2008 ...
  .. ..$ Bdcd: int [1:618] 122000 122001 112001 112002 112003 112004 112005 112006 122000 122001 ...
  ..$ :'data.frame':    1 obs. of  1 variable:
  .. ..$ variable: Factor w/ 1 level "age": 1
> fix(temp2)
> str(temp2)
'data.frame':   618 obs. of  3 variables:
$ year: num  2007 2007 2008 2008 2008 ...
$ Bdcd: num  122000 122001 112001 112002 112003 ...
$ age : num  0.1569 0.0807 0.4268 0.3747 0.227 ...
为什么fix前后temp2的结构会发生变化,cast函数有没有错?
二维码

扫码加我 拉你入群

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

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

关键词:reshape Shape APE CAS FIX

沙发
童小军 发表于 2013-7-28 23:03:25
t1.txt (845.38 KB)

藤椅
ryusukekenji 发表于 2013-7-29 00:05:38
  1. t1<-read.table("C:/Users/abc/Documents/t1.txt",header=T)
  2. library(reshape)
  3. temp1<-melt(t1,id=c('year','Bdcd'))
  4. temp2<-cast(temp1,year+Bdcd~variable,mean)
  5. str(temp2)
  6. fix(temp2)
  7. temp3<-melt(temp2,id=c("year"))
  8. temp4<-cast(temp3,year~variable,c(mean,median,sd),na.rm=T)

  9. # 使用RStudio软件
  10. view(temp2)
  11. edit(temp2)
  12. fix(temp2)
复制代码
咱这儿数据没问题,楼主的文件是csv或txt?

板凳
童小军 发表于 2013-7-29 09:35:56
ryusukekenji 发表于 2013-7-29 00:05
咱这儿数据没问题,楼主的文件是csv或txt?
  1. t1<-read.table("t1.txt",header=T)
  2. library(reshape)
  3. temp1<-melt(t1,id=c('year','Bdcd'))
  4. temp2<-cast(temp1,year+Bdcd~variable,mean)
  5. str(temp2)
  6. fix(temp2)
  7. str(temp2)
复制代码

我的问题是fix(temp2)前后的str(temp2)结构不一样,
第一个str是:
str(temp2)
List of 3
$ year: int [1:618] 2007 2007 2008 2008 2008 2008 2008 2008 2008 2008 ...
$ Bdcd: int [1:618] 122000 122001 112001 112002 112003 112004 112005 112006 122000 122001 ...
$ age : num [1:618] 0.1569 0.0807 0.4268 0.3747 0.227 ...
- attr(*, "row.names")= int [1:618] 1 2 3 4 5 6 7 8 9 10 ...
- attr(*, "idvars")= chr [1:2] "year" "Bdcd"
- attr(*, "rdimnames")=List of 2
  ..$ :'data.frame':    618 obs. of  2 variables:
  .. ..$ year: int [1:618] 2007 2007 2008 2008 2008 2008 2008 2008 2008 2008 ...
  .. ..$ Bdcd: int [1:618] 122000 122001 112001 112002 112003 112004 112005 112006 122000 122001 ...
  ..$ :'data.frame':    1 obs. of  1 variable:
  .. ..$ variable: Factor w/ 1 level "age": 1
第二个str就变成了:
'data.frame':   618 obs. of  3 variables:
$ year: num  2007 2007 2008 2008 2008 ...
$ Bdcd: num  122000 122001 112001 112002 112003 ...
$ age : num  0.1569 0.0807 0.4268 0.3747 0.227 ...
我想要的temp2是第二个!

报纸
童小军 发表于 2013-7-29 10:05:38
求指导

地板
ryusukekenji 发表于 2013-7-29 22:38:19
童小军 发表于 2013-7-29 10:05
求指导
  1. t1<-read.table("C:/Users/ryusukekenji/Documents/t1.txt",header=T)
  2. library(reshape)
  3. temp1<-melt(t1,id=c('year','Bdcd'))
  4. temp2<-cast(temp1,year+Bdcd~variable,mean)

  5. # 数据格式?
  6. class(temp2$year)
  7. class(temp2$Bdcd)
  8. class(temp2$age)

  9. str(temp2)
  10. fix(temp2)

  11. # 数据格式?
  12. class(temp2$year)
  13. class(temp2$Bdcd)
  14. class(temp2$age)
复制代码
嘻嘻,有没有留意到使用cast 函数呈现出的数据结果格式Class不一样...

7
童小军 发表于 2013-7-31 21:23:22
ryusukekenji 发表于 2013-7-29 22:38
嘻嘻,有没有留意到使用cast 函数呈现出的数据结果格式Class不一样...
注意到了,那怎样修正呢?使得str()前后的格式一致??

8
ryusukekenji 发表于 2013-7-31 23:18:58
童小军 发表于 2013-7-31 21:23
注意到了,那怎样修正呢?使得str()前后的格式一致??
  1. > as.integer
  2. function (x, ...)  .Primitive("as.integer")
  3. > as.numeric
  4. function (x, ...)  .Primitive("as.double")
复制代码
转换class

9
童小军 发表于 2013-8-1 18:16:04
ryusukekenji 发表于 2013-7-31 23:18
转换class
嗯,Thank u。

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

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