R語言reshape2包對資料格式進行整理

2021-10-22 01:20:26 字數 1693 閱讀 4275

在臨床研究中經常需要需要從醫院的his系統裡面匯入化驗單資料,然而從his系統裡面匯出的資料都是寬資料,很多都是多人多次反覆的檢查結果,並不好進行直接分析,如下圖

我們需要轉換成下列長資料形式才好進一步分析

我們今天將使用r語言自帶的reshape2包對資料格式進行整理,將寬資料轉換成長資料,或者根據需要在長寬資料進行轉化,這在臨床資料採集或資料探勘中有積極的現實意義。

我們先來匯入reshape2包和自己模擬乙個輕度高血壓的寬資料,

library(reshape2)

id12)

time

3,4)

sbp12,mean =

150,sd=9)

)svd

12,mean =

90,sd=8)

)bc

隨便模擬一下,臨床意義不管他,下圖是資料的結構

)##id為固定不變的變數,measure.vars為需要整合的變數,variable.name 為新變數名字

新的變數bp把sbp和svd整合在裡面了。

我們需要的話也可以把長資料從新轉成寬資料

#轉成寬資料

dcast(be,id+time~bp)

#轉成寬資料

其他的還有

dcast(be,id+time~bp,mean)

#轉成寬資料並取平均值

dcast(be,time~bp,mean)

#取3次timede

acast(be,id~time~bp)

#分組表示sbp,svd的平均值

如果資料很大的話,我們也可以取一部分亞組,資料大的時候有用

取亞組的話還要匯入乙個plyr包

#取亞組表示

library(plyr)

acast(be,bp~id,mean, subset = .(bp ==

"sbp"))

#取sbp為亞組的值

acast(be,bp~time,mean, subset = .(bp ==

"sbp"))

#time每次測量平均值取sbp

acast(be,bp~time,mean, subset = .(time ==3)

)#取第三次sbp和svd的平均值

acast(be,bp~time,mean, subset = .(time <3)

)#time前兩次的sbp和svd的平均值

R語言的reshape2包及相關函式

merge函式 合併擁有兩個共同列名或者兩個共同行名的資料幀。merge x,y,by intersect names x names y by.x by,by.y by,all false,all.x all,all.y all,sort true,suffixes c x y no.dups t...

R語言 資料轉化2

資料框的轉置 行與列的轉置t 函式,單獨轉置一行利用rev函式即可用於向量也可用於資料框 修改資料框中的值 eg 將women資料集中身高英吋換位厘公尺 為單位 如果需要修改的值較多上面的方法就不高效率,可以利用transfor函式可以任意修改資料框中列的值 如果不想修改原資料那麼可以再定義乙個值 ...

R語言常用資料探勘包

今天發現乙個很不錯的部落格 博主致力於研究r語言在資料探勘方面的應用,正好近期很想系統的學習一下r語言和資料探勘的整個流程,看了這個部落格的內容,心裡久久不能平靜。決定從今天開始 今天發現乙個很不錯的部落格 博主致力於研究r語言在資料探勘方面的應用,正好近期很想系統的學習一下r語言和資料探勘的整個流...