Я пытаюсь собрать неопрятные данные от широкого до длинного формата.У меня есть 748 переменных, которые нужно сжать примерно до 30.
В этой записи я спросил: как привести в порядок мои широкие данные?Ответ: используйте collect ().
Однако я все еще пытаюсь собрать несколько столбцов и надеялся, что вы сможете точно определить, где я ошибаюсь.
Воспроизводимый пример:
tb1 <- tribble(~x1,~x2,~x3,~y1,~y2,~y3,
1,NA,NA,NA,1,NA,
NA,1,NA,NA,NA,1,
NA,NA,1,NA,NA,1)
# A tibble: 3 x 6
# x1 x2 x3 y1 y2 y3
# <dbl> <dbl> <dbl> <lgl> <dbl> <dbl>
#1 1 NA NA NA 1 NA
#2 NA 1 NA NA NA 1
#3 NA NA 1 NA NA 1
с x1-y3, имеющим следующие характеристики:
1 x1 Green
2 x2 Yellow
3 x3 Orange
4 y1 Yes
5 y2 No
6 y3 Maybe
Я пробовал это:
tb1 %>%
rename("Green" =x1,
"Yellow"=x2,
"Orange"=x3,
"Yes"=y1,
"No"=y2,
"Maybe"=y3) %>%
gather(X,val,-Green,-Yellow,-Orange) %>%
gather(Y,val,-X) %>%
select(-val)
Iполучил вывод, который я хотел для этих переменных, но я не представляю, как это сделать для 700+ переменных ?!Есть ли более эффективный способ?
tb1 %>%
rename("Green" =x1,
"Yellow"=x2,
"Orange"=x3,
"Yes"=y1,
"No"=y2,
"Maybe"=y3) %>%
gather(X,val,-Green,-Yellow,-Orange) %>%
filter(!is.na(val)) %>%
select(-val) %>%
gather(Y,val,-X) %>%
filter(!is.na(val)) %>%
select(-val)
# A tibble: 3 x 2
X Y
<chr> <chr>
1 No Green
2 Maybe Yellow
3 Maybe Orange
Я думаю, что я, возможно, просто недостаточно знаком с collect (), так что это, вероятно, глупый вопрос - буду признателен за помощь.Спасибо!