Mam ogromny zbiór danych, w którym znajduje się jedna kolumna zawierająca kilka wartości dla każdego tematu (wiersza). Oto uproszczony przykład dataframe:Podział jednej kolumny na wiele kolumn
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
raz pierwszy chcesz usunąć litery (A
, B
, A and B
...) w czwartej kolumnie (v1
), a następnie podzielić Czwarta kolumna w wielu kolumnach, tak jak to :
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
gdzie 1st przedmiot wykonuje 1 w X2, ponieważ zajmuje 2 V1 w pierwotnym zestawie danych, 3. przedmiot wykonuje 1 zarówno X3 i X5, ponieważ zajmuje 3 i 5 V1 w pierwotnym zestawie danych i tak dalej.
Byłbym wdzięczny za każdą pomoc dotyczącą tego pytania. Wielkie dzięki.
Dziękuję bardzo. Twój skrypt R działa bardzo dobrze. – user187454
Dziękujemy za aktualizację. Mam dodatkowe pytanie. Tutaj podaję tylko prosty zbiór danych, w którym v1 przyjmuje maksymalną wartość "6". W moich prawdziwych danych, skoro jest olbrzymi, czy istnieje prosty sposób na automatyczne określenie maksymalnej wartości v1 zamiast podawania jej przez siebie? Dzięki. – user187454
Wielkie dzięki, jesteś bardzo pomocny. – user187454