全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3028 4
2019-07-21

各位老师好,小弟在处理数据的时候遇到一些问题,希望能得到大家的解答:
问题主要是关于:识别出重复测量数据(严格讲,不属于重复数据,因为一个人可能同时患有多重疾病),然后将重复的数据进行转置:原始数据为图1,希望达到的效果如图2(图中的des1,des2,des3希望能自动按照最多的重复次数而自动生成);

#构建数据框#
c1<-c(1:7)
c2<-c("30040","30040","30041","30041","30041","30042","30043")
c3<-c("糖尿病","感染","高血压","糖尿病","感染","高血压","糖尿病")
a=data.frame(c1,c2,c3)
names(a)<-c("num","id","des")

听说stata很容易能实现这个效果,但是由于其他原因无法使用stata进行处理,希望有老师能帮忙用R解答一下,非常感谢~

1.png

附件列表
微信截图_20190721155539.png

原图尺寸 12.39 KB

微信截图_20190721155539.png

二维码

扫码加我 拉你入群

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

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

全部回复
2019-7-21 16:09:37
reshape包了解下
二维码

扫码加我 拉你入群

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

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

2019-7-21 16:32:22
library(tidyr)
a %>% spread(num,des)
二维码

扫码加我 拉你入群

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

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

2019-7-21 17:08:09
ekeen 发表于 2019-7-21 16:32
library(tidyr)
a %>% spread(num,des)
感谢您的解答,我把数据重新加了一列cat,这样后面更好理解和处理,我使用reshape包中的dcast(a,num+id~cat),能初步达到效果,同时使用您的a %>% spread(cat,des),两者均可达到初步的效果;但是出来的结果中,同一个id号的仍然分为了好几行,未能合并到一行,这个又需要怎么处理呢?我在其他地方看到的使用dcast的命令后(https://www.cnblogs.com/ljhdo/p/4954351.html),同一id的就全部合并到一行了,不知道为何我的不行,谢谢~
#数据框更新#
c1<-c(1:7)
c2<-c("30040","30040","30041","30041","30041","30042","30043")
c3<-c("des","des1","des2","des","des1","des2","des")
c4<-c("糖尿病","感染","高血压","糖尿病","感染","高血压","糖尿病")
a=data.frame(c1,c2,c3,c4)
names(a)<-c("num","id","cat","des")
#dcast(a,num+id~cat)后的结果# 4.png

二维码

扫码加我 拉你入群

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

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

2019-7-21 17:11:42
感谢您的解答,我知道原因了,dcast(a,id~cat),就呈现出了想要的结果~感谢~
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群