代码之家  ›  专栏  ›  技术社区  ›  Denis

将每一行与相应的列合并以形成一个垂直表

  •  0
  • Denis  · 技术社区  · 6 年前

    我正在尝试合并每一行 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'))
    

    每行 . 注:更喜欢一个基本的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 回复  |  直到 6 年前
        1
  •  1
  •   akrun    6 年前

    可以通过将“a”数据集的列名设置为“b”的“p”列,然后 stack data.frame

    stack(setNames(a, b$p))
    

    或使用 tidyverse

    library(tidyverse)
    a %>%
       rename_all(~ b$p) %>%
       gather %>% 
       rename(!! rlang::sym(names(b)) := key, val = value)