楼主: 杭州人
6783 6

[问答] 一个关于 reshape cast(),数据重构的问题。 [推广有奖]

  • 0关注
  • 3粉丝

已卖:1份资源

本科生

38%

还不是VIP/贵宾

-

威望
0
论坛币
98 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
1 点
经验
1218 点
帖子
68
精华
0
在线时间
115 小时
注册时间
2012-12-14
最后登录
2016-9-6

楼主
杭州人 发表于 2015-11-25 11:27:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

我有如下一个数据框, 是关于个人同时在各个大学任职的数据,

            
  1.               position1   position2  position3 position4
  2. individual_A   UniA        UniC          NA       NA
  3. individual_B   UniB        UniD          NA       NA
  4. individual_C   UniB        NA            NA       NA
  5. individual_D   UniA        UniB          UniC     NA
复制代码

为了分析,我需要把它转换成如下格式, 我尝试用cast(), 但是因为原数据中的value其实都是字符串,根本转不成我需要的样子。

               
  1.                UniA  UniB  UniC  UniD
  2. individual_A    1     NA     1     NA
  3. individual_B    NA     1     NA     1
  4. individual_C    NA     1     NA    NA
  5. individual_D    1      1      1    NA
复制代码

哪位大侠有没有什么主意或者提示吗?  谢谢了


二维码

扫码加我 拉你入群

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

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

关键词:reshape Shape CAS APE RES reshape

沙发
jiangbeilu 学生认证  发表于 2015-11-25 11:35:50
谁知道你要转成什么样子呢?

藤椅
杭州人 发表于 2015-11-25 11:41:10
jiangbeilu 发表于 2015-11-25 11:35
谁知道你要转成什么样子呢?
不好意思,刚刚发出帖子都是乱码, 我又重新编辑了一下。 现在好了

板凳
jgchen1966 发表于 2015-11-25 11:48:58
用tidyr 吧!!一学就会了!!

报纸
jiangbeilu 学生认证  发表于 2015-11-25 13:16:18
我明白你要做什么了,看一下下面的代码就可以了:
  1. xx=data.frame(po1=c("A","B","B","A"),po2=c("C","D",NA,"B"),
  2. po3=c(NA,NA,NA,"C"),po4=rep(NA,4))
  3. xx

  4. xlist=c("A","B","C","D")

  5. adjf<- function(x,y){
  6. rowSums(y==x,na.rm=T)
  7. }
  8. sapply(xlist,adjf,y=xx)
复制代码

地板
dragonp 发表于 2016-2-21 19:41:21
我用的是melt + cast 函数,可以实现你的要求。
  1. >read.csv("aa.csv",header=T)
  2. >aa
  3.              X position1 position2 position3
  4. 1 individual_A      UniA      UniC      <NA>
  5. 2 individual_B      UniB      UniD      <NA>
  6. 3 individual_C      UniB      <NA>      <NA>
  7. 4 individual_D      UniA      UniB      UniC
  8.   position4
  9. 1        NA
  10. 2        NA
  11. 3        NA
  12. 4        NA
  13. > bb <-melt(aa,id=c("X"))
  14. >bb
  15.               X  variable value
  16. 1  individual_A position1  UniA
  17. 2  individual_B position1  UniB
  18. 3  individual_C position1  UniB
  19. 4  individual_D position1  UniA
  20. 5  individual_A position2  UniC
  21. 6  individual_B position2  UniD
  22. 7  individual_C position2  <NA>
  23. 8  individual_D position2  UniB
  24. 9  individual_A position3  <NA>
  25. 10 individual_B position3  <NA>
  26. 11 individual_C position3  <NA>
  27. 12 individual_D position3  UniC
  28. 13 individual_A position4  <NA>
  29. 14 individual_B position4  <NA>
  30. 15 individual_C position4  <NA>
  31. 16 individual_D position4  <NA>
  32. >cc <- cast(bb,X~value)
  33. >cc
  34.              X UniA UniB UniC UniD NA
  35. 1 individual_A    1    0    1    0  2
  36. 2 individual_B    0    1    0    1  2
  37. 3 individual_C    0    1    0    0  3
  38. 4 individual_D    1    1    1    0  1
  39. > cc[cc==0] <- NA
  40. > cc <- cc[-6]
  41.              X UniA UniB UniC UniD
  42. 1 individual_A    1   NA    1   NA
  43. 2 individual_B   NA    1   NA    1
  44. 3 individual_C   NA    1   NA   NA
  45. 4 individual_D    1    1    1   NA
复制代码

7
956487315 发表于 2016-10-14 18:45:33
cast  value=‘ AA’,就会显示AA列相应的值吗?为什么我显示的是0,1,2?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 00:17