所以目標是采取這樣的表格:
| 人 | 回答 |
|---|---|
| 馬特 | A;B;C; |
| 沙 | B;D; |
| 查爾斯 | A;C;D; |
并將其轉換為:
| 人 | 一個 | 乙 | C | D |
|---|---|---|---|---|
| 馬特 | 1 | 1 | 1 | 0 |
| 沙 | 0 | 1 | 0 | 1 |
| 查爾斯 | 1 | 0 | 1 | 1 |
我覺得可能有一種適當的方法來處理這個問題,tidyverse但是pivot,unnest或mutate方法似乎都不理想,不會涉及很多混亂的處理。
我應該如何解決這個問題?
uj5u.com熱心網友回復:
訣竅是用來tidyr::separate_rows()將您的資料移動到更長的格式。
提取所有答案后,很容易將其轉回寬格式tidyr::pivot_wider()
library(tidyverse)
d <- tibble::tribble(
~Person, ~Answer,
"Matt", "A;B;C;",
"Sandy", "B;D;",
"Charles", "A;C;D;"
)
d |>
tidyr::separate_rows(Answer, sep = ";") |>
filter(Answer != "") |>
mutate(value = 1) |>
pivot_wider(
names_from = Answer,
values_from = value,
values_fill = 0
)
#> # A tibble: 3 x 5
#> Person A B C D
#> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 Matt 1 1 1 0
#> 2 Sandy 0 1 0 1
#> 3 Charles 1 0 1 1
由reprex 包于 2022-06-15 創建(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/491548.html
