Lar*_*ury 5 split r dataframe mutate
我有一些来自Google 表单的数据,我想插入常用分隔的答案并复制参与者的 ID
> head(data)
names Q2 Q3 Q4
1 PART_1 fruits bananas, apples brocolli, lettuce, potatoes
2 PART_2 vegetables bananas, oranges brocolli
3 PART_3 fruits carrots, brocolli, lettuce
Run Code Online (Sandbox Code Playgroud)
names Q2 Q3 Q4
1 PART_1 fruits bananas brocolli
PART_1 NA apples lettuce,
PART_1 NA NA potatoes
so on...
Run Code Online (Sandbox Code Playgroud)
names Q2 Q3 Q4
1 PART_1 fruits bananas brocolli
PART_1 fruits apples lettuce,
PART_1 fruits NA potatoes
so on...
Run Code Online (Sandbox Code Playgroud)
tidyverse解决方案将不胜感激!Obs:这个想法很像这个 SQL 问题。我看过这个 R 问题,但我想重复参与者的名字,而不是重命名他们
structure(list(names = c("PART_1", "PART_2", "PART_3"), Q2 = c("fruits",
"vegetables", "fruits"), Q3 = c("bananas, apples", "bananas, oranges",
""), Q4 = c("brocolli, lettuce, potatoes", "brocolli", "carrots, brocolli, lettuce"
)), class = "data.frame", row.names = c(NA, -3L))
Run Code Online (Sandbox Code Playgroud)
你可以做:
\nlibrary(tidyr)\nlibrary(dplyr)\n\ndat %>% \n pivot_longer(-c(Q2, names)) %>%\n separate_rows(value) %>%\n group_by(names, name) %>%\n mutate(row = row_number()) %>%\n pivot_wider() %>%\n select(-row)\n\n# A tibble: 8 \xc3\x97 4\n# Groups: names [3]\n names Q2 Q3 Q4 \n <chr> <chr> <chr> <chr> \n1 PART_1 fruits "bananas" brocolli\n2 PART_1 fruits "apples" lettuce \n3 PART_1 fruits NA potatoes\n4 PART_2 vegetables "bananas" brocolli\n5 PART_2 vegetables "oranges" NA \n6 PART_3 fruits "" carrots \n7 PART_3 fruits NA brocolli\n8 PART_3 fruits NA lettuce \nRun Code Online (Sandbox Code Playgroud)\n
目前无法直接使用separate_rows,否则这是tidyverse可行的方法,但您可以使用cSplitfrom splitstackshape:
library(dplyr)
library(splitstackshape)
cSplit(data, c("Q3", "Q4"), sep = ", ", "long") %>%
filter(if_any(c("Q3", "Q4"), complete.cases))
# names Q2 Q3 Q4
# 1 PART_1 fruits bananas brocolli
# 2 PART_1 fruits apples lettuce
# 3 PART_1 fruits <NA> potatoes
# 4 PART_2 vegetables bananas brocolli
# 5 PART_2 vegetables oranges <NA>
# 6 PART_3 fruits <NA> carrots
# 7 PART_3 fruits <NA> brocolli
# 8 PART_3 fruits <NA> lettuce
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |