我正在尝试将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
答案 0 :(得分:1)
可以通过将“ a”数据集的列名称设置为“ b”的“ p”列,然后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)