将行与列连接起来以创建垂直表

丹尼斯

我试图弄清楚如何连接2个数据帧以创建数据的垂直表。以下是一些示例数据:

people <- data.frame(person = c("John","David","Peter"), company = c("A", "B", "C"))
grades <- data.frame(person1=c(10, 40, 50, 60), person2=c(60,70,80, 100), person3=c(33,44,55, 75))

注意:中的列grades顺序personpeople数据框中顺序相同

我想得到一个像下面这样的数据框,但是想不到如何到达那里。希望使用基于R的解决方案(因为我使用的是R的较旧版本,因此某些软件包对我不起作用):

person | company | grade
-------------------------
 John  |    A    | 10
 John  |    A    | 40
 John  |    A    | 50
 John  |    A    | 60
David  |    B    | 60
David  |    B    | 70
David  |    B    | 80
David  |    B    | 100
Peter  |    C    | 33
Peter  |    C    | 44
Peter  |    C    | 55
Peter  |    C    | 75
阿克伦

我们将“人”列的“等级”列名称从“人”更改gather为“长”格式,然后执行left_join

library(tidyverse)
setNames(grades, people$person) %>% 
     gather(person, grade) %>% 
    left_join(people)
#   person grade company
#1    John    10       A
#2    John    40       A
#3    John    50       A
#4    John    60       A
#5   David    60       B
#6   David    70       B
#7   David    80       B
#8   David   100       B
#9   Peter    33       C
#10  Peter    44       C
#11  Peter    55       C
#12  Peter    75       C

base Rmerge

merge(stack(setNames(grades, people$person)), 
      people, all.x = TRUE, by.x = 'ind', by.y = 'person')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章