私は巨大なデータセットを持っています。そこには、各サブジェクト(行)ごとにいくつかの値を含む1つの列があります。ここでは単純化されたサンプルデータフレームです:1つの列を複数の列に分割する
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
私は最初の4列目(v1
)内の文字(A
、B
、A and B
、...)を削除したい、その後、ちょうどこのように複数列に4番目の列を分割:それは元のデータセットにV1で3,5がかかるため、それは元のデータセットにV1で2がかかるため第1被験者がX2で1かかり
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
は、3被験者がX3及びX5の両方に1をとり、等々。
私はこの質問について助けていただきたいと思います。どうもありがとう。
ありがとうございます。あなたのRスクリプトはとてもうまく動作します。 – user187454
更新いただきありがとうございます。もう一つの質問があります。ここでは、v1が最大値「6」をとる単純なデータセットのみを示します。私の実際のデータでは、巨大なので、自分でそれを指定するのではなく、v1の最大値を自動的に決定する簡単な方法はありますか?ありがとう。 – user187454
ありがとう、あなたは非常に役に立ちます。 – user187454