以下我先前的問題: R: reshape/gather function to create dataset ready for multilevel analysis整理和重塑凌亂的數據集(重塑/收集/統一功能)?
我發現它有點複雜。我的數據集實際上比我希望的更「混亂」。所以這裏是全文: 我有一個很大的數據集,240個案例。每一行都是一例(乳腺癌患者)。在數據集末尾的某處(從第417列開始),我有患者的合作伙伴數據,這些數據也填寫了問卷。首先,患者和合作夥伴都有人口統計變量,其次是患者的測試結果,然後是合作伙伴數據。
我想創建一個數據集,在這裏我將患者和合作夥伴數據「分開」,但保持耦合。因此:我想複製主題ID並用1和2創建新列(1對應於患者,2對應於夥伴)。 然後,我希望我的數據像現在一樣,但是可以匹配一些變量(例如,我知道患者[pgebdat]和伴侶[prgebdat]有單獨的「出生日期」。這與以下兩個相互出生日期「gebdat」
此代碼爲我工作我的數據的一小部分。
mydf_long <- mydf4 %>%
unite(bb1:bb50rec, col = `1`, sep = ";") %>% # Combine responses of 'p1' through 'p3'
unite(pbb1:pbb50recM, col = `2`, sep = ";") %>% # Combine responses of 'pr1' through 'pr3'
gather(couple, value, `1`:`2`) %>% # Form into long data
separate(value, sep = ";", into = c(paste0("bb", seq(1:104),"", sep = ','))) %>% # Separate and retrieve original answers
arrange(id)
結果:
id groep_MNC zkhs fbeh pgebdat couple bb1,
1 3 1 1 1 1955-12-01 1 4
2 3 1 1 1 1955-12-01 2 5
3 5 1 1 1 1943-04-09 1 2
4 5 1 1 1 1943-04-09 2 2
但現在它會將患者的出生日期複製並粘貼到「合作伙伴」 '排。
我被卡住了,甚至不知道你需要什麼數據才能回答我的問題,所以請不要問。我會在下面的例子中的東西:
數據
id groep_MNC zkhs fbeh pgebdat p_age pgesl prgebdat pr_age prgesl relpnst
1 3 1 1 1 1955-12-01 42.50000 1 <NA> NA 2 1
2 5 1 1 1 1943-04-09 55.16667 1 1962-04-18 36.50000 1 2
3 7 1 1 1 1958-04-10 40.25000 1 <NA> NA 2 1
4 10 1 1 1 1958-04-17 40.25000 1 1957-07-31 41.33333 2 1
5 12 1 1 2 1947-11-01 50.66667 1 1944-06-08 54.58333 2 1
和實例的話,幾百個變量的只有患者後,該合作伙伴的數據走來:
pbb1 pbb2 pbb3 pbb4 pbb5 pbb6 pbb7 pbb8 pbb9
1 5 5 5 5 2 5 4 2 3
2 2 1 4 1 3 4 3 3 4
3 5 3 4 4 4 3 5 3 4
4 5 3 5 5 5 5 4 4 4
5 5 5 5 5 5 4 4 3 4
請注意,我自己並沒有創建這個數據集 - 我只是在這裏清理混亂:)
編輯:該數據集位於荷蘭。病人,prgesl =性別的合作伙伴...等
好像你可能會試圖把一切都在一個表中的過於複雜的任務。它是否簡化了將合作伙伴數據與患者數據分開的任務,分別對每個患者進行必要的操作,然後將分析前需要的數據合併起來? – Benjamin
這可能是一個好主意,但我不完全確定如何添加額外的行並保持數據耦合。 – HannekeLettinga