我有一個巨大的數據集,其中有一列包括每個主題(行)的幾個值。這裏是一個簡化的樣本數據幀:將一列分成多列
data <- data.frame(subject = c(1:8), sex = c(1, 2, 2, 1, 2, 1, 1, 2),
age = c(35, 29, 31, 46, 64, 57, 49, 58),
v1 = c("2", "0", "3,5", "2 1", "A,4", "B,1,C", "A and B,3", "5, 6 A or C"))
> data
subject sex age v1
1 1 1 35 2
2 2 2 29 0
3 3 2 31 3,5 # separated by a comma
4 4 1 46 2 1 # separated by a blank space
5 5 2 64 A,4
6 6 1 57 B,1,C
7 7 1 49 A and B,3
8 8 2 58 5, 6 A or C
我首先要在第四列取出字母(A
,B
,A and B
,...)(v1
),然後拆分第四欄爲多列就這樣:
subject sex age x1 x2 x3 x4 x5 x6
1 1 1 35 0 1 0 0 0 0
2 2 2 29 0 0 0 0 0 0
3 3 2 31 0 0 1 0 1 0
4 4 1 46 1 1 0 0 0 0
5 5 2 64 0 0 0 1 0 0
6 6 1 57 1 0 0 0 0 0
7 7 1 49 0 0 1 0 0 0
8 8 2 58 0 0 0 0 1 1
其中第一主體在X2爲1,因爲它在原始數據集需要2在V1,所述第三主體在兩個X3和X5爲1,因爲它在原始數據集需要3和5在V1,等等。
我希望在這個問題上的任何幫助。非常感謝。
非常感謝。你的R腳本工作得很好。 – user187454
感謝您的更新。我還有一個問題。在這裏我只給出一個簡單的數據集,其中v1取最大值「6」。在我的真實數據中,由於它很大,是否有一種簡單的方法可以自動確定v1的最大值,而不是由我自己指定?謝謝。 – user187454
非常感謝,您非常樂於助人。 – user187454