Объединить каждую строку с соответствующим столбцом, чтобы сформировать вертикальную таблицу - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь объединить каждую строку в b с каждым столбцом в a, чтобы я мог создать вертикальную таблицу со всеми данными.

Предположим, у меня есть следующее:

a <- data.frame(col1 = c(1,2,3,4), col2=c(5,6,7,8), col3=c(9,10,11,12))
b <- data.frame(p=c('a', 'b', 'c'))

Я хотел бы объединить соответствующие столбцы в a для каждой строки b.ПРИМЕЧАНИЕ: предпочел бы решение на основе R, но было бы интересно изучить другие решения.

Пытаясь получить мой конечный результат, чтобы он выглядел следующим образом:

p | val
-------
a | 1
a | 2
a | 3
a | 4
b | 5
b | 6
b | 7
b | 8
c | 9
c | 10
c | 11
c | 12 

1 Ответ

0 голосов
/ 13 февраля 2019

Это можно сделать, установив имена столбцов набора данных 'a' со столбцом 'p' в 'b', а затем stack data.frame в два столбца data.frame с одним столбцом, представляющим столбецимена и второй со значениями столбца

stack(setNames(a, b$p))

или с использованием tidyverse

library(tidyverse)
a %>%
   rename_all(~ b$p) %>%
   gather %>% 
   rename(!! rlang::sym(names(b)) := key, val = value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...