将新列从另一个数据帧添加到长数据帧?

金精

假设我有两个数据框。我有一个列出足球运动员的姓名,他们参加过的球队以及他们在每个球队进球的进球数的人。然后,我还有一个数据框,其中包含足球运动员的年龄和他们的姓名。如何在目标数据框的“年龄”列中向目标数据框添加“ names_age”列,而不在“ teammates_names”列中添加球员的年龄列?如何添加队友的年龄列?简而言之,我想要两个年龄列:一个用于第一组球员,一个用于第二组。

> AGE_DF

  names age
1   Sam  20
2   Jon  21
3  Adam  22
4  Jason 23
5  Jones 24
6  Jermaine 25

> GOALS_DF
   names goals      team teammates_names teammates_goals teammates_team
1    Sam     1       USA           Jason               1        HOLLAND
2    Sam     2   ENGLAND           Jason               2       PORTUGAL
3    Sam     3    BRAZIL           Jason               3          GHANA
4    Sam     4   GERMANY           Jason               4       COLOMBIA
5    Sam     5 ARGENTINA           Jason               5         CANADA
6    Jon     1       USA           Jones               1        HOLLAND
7    Jon     2   ENGLAND           Jones               2       PORTUGAL
8    Jon     3    BRAZIL           Jones               3          GHANA
9    Jon     4   GERMANY           Jones               4       COLOMBIA
10   Jon     5 ARGENTINA           Jones               5         CANADA
11  Adam     1       USA        Jermaine               1        HOLLAND
12  Adam     1   ENGLAND        Jermaine               1       PORTUGAL
13  Adam     4    BRAZIL        Jermaine               4          GHANA
14  Adam     3   GERMANY        Jermaine               3       COLOMBIA
15  Adam     2 ARGENTINA        Jermaine               2         CANADA

我尝试了什么:我已经成功使用for循环使它正常工作。我正在使用的实际数据具有数千行,这需要很长时间。我想要向量化的方法,但是在想办法做到这一点时遇到了麻烦。

A5C1D2H2I1M1N2O1R2T1

尝试mergematch

  1. 这是merge(很可能会弄乱您的行顺序,有时可能会很慢):

    merge(AGE_DF, GOALS_DF, all = TRUE)
    
  2. 这是match,它利用了基本的索引编制和子设置。当然,将结果分配给新列。

    AGE_DF$age[match(GOALS_DF$names, AGE_DF$names)]
    

这里是要考虑的另一种选择:首先将数据集转换为长格式,然后进行合并。在这里,我已经完成了melt和“ data.table”的工作:

library(reshape2)
library(data.table)
setkey(melt(as.data.table(GOALS_DF, keep.rownames = TRUE), 
            measure.vars = c("names", "teammates_names"), 
            value.name = "names"), names)[as.data.table(AGE_DF)]
#     rn goals      team teammates_goals teammates_team        variable    names age
#  1:  1     1       USA               1        HOLLAND           names      Sam  20
#  2:  2     2   ENGLAND               2       PORTUGAL           names      Sam  20
#  3:  3     3    BRAZIL               3          GHANA           names      Sam  20
#  4:  4     4   GERMANY               4       COLOMBIA           names      Sam  20
#  5:  5     5 ARGENTINA               5         CANADA           names      Sam  20
#  6:  6     1       USA               1        HOLLAND           names      Jon  21
## <<SNIP>>
# 28: 13     4    BRAZIL               4          GHANA teammates_names Jermaine  25
# 29: 14     3   GERMANY               3       COLOMBIA teammates_names Jermaine  25
# 30: 15     2 ARGENTINA               2         CANADA teammates_names Jermaine  25
#     rn goals      team teammates_goals teammates_team        variable    names age

我已经添加了行名,以便您可以使用dcast它返回宽格式并保留行顺序(如果重要的话)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据R中的两个匹配条件,将值从一个数据帧添加到另一个数据帧

来自分类Dev

将摘要n从一个数据帧添加到另一个数据帧(tidyverse)

来自分类Dev

将行从一个数据帧添加到另一个

来自分类Dev

仅将数据帧中的新值附加到 Pandas 中的另一个数据帧

来自分类Dev

如何提取数据帧的每一行并将解析的字符串从另一个数据帧添加到R中第一个数据帧的列

来自分类Dev

根据另一个数据帧中的值将数据帧的列相乘

来自分类Dev

将数据框列添加到另一个数据框

来自分类Dev

将数据框列添加到另一个数据框

来自分类Dev

通过将一个数据帧的列与另一个数据帧的行相乘来获取一个数据帧

来自分类Dev

如何基于另一个数据帧中的时间间隔在一个数据帧中添加新列

来自分类Dev

将一个数据帧附加到另一个

来自分类Dev

如何将数据帧附加到另一个数据帧的每一行?

来自分类Dev

如何根据键值将转换为数组的数据帧添加为另一个数据帧的元素

来自分类Dev

从另一个数据帧r添加/减去数据帧行

来自分类Dev

基于没有长数据的另一个数据帧创建NA

来自分类Dev

将数据帧与来自另一个数据帧的权重相乘

来自分类Dev

将列从一个数据框添加到另一个python pandas

来自分类Dev

在 R 中动态地将一个数据帧附加到另一个数据帧上

来自分类Dev

将条件添加到另一个数据框上的条件的数据框

来自分类Dev

根据另一个数据框中的值将列添加到数据框中

来自分类Dev

根据来自另一个数据框的计数将列添加到数据框

来自分类Dev

R Studio:将数据框的列添加到另一个数据框(合并)

来自分类Dev

如何使用另一个数据框将列添加到数据框?

来自分类Dev

将一个数据帧与另一个数据帧作为模板逐行合并

来自分类Dev

将一个数据帧切片到另一个数据帧中

来自分类Dev

R-使用另一个数据框的匹配值将新列添加到数据框

来自分类Dev

如何从另一个数据帧更新一个数据帧的特定列

来自分类Dev

将数据从一个数据帧拖入另一个

来自分类Dev

将一个数据框的列添加到另一个数据框,以获取重叠列中的值

Related 相关文章

  1. 1

    根据R中的两个匹配条件,将值从一个数据帧添加到另一个数据帧

  2. 2

    将摘要n从一个数据帧添加到另一个数据帧(tidyverse)

  3. 3

    将行从一个数据帧添加到另一个

  4. 4

    仅将数据帧中的新值附加到 Pandas 中的另一个数据帧

  5. 5

    如何提取数据帧的每一行并将解析的字符串从另一个数据帧添加到R中第一个数据帧的列

  6. 6

    根据另一个数据帧中的值将数据帧的列相乘

  7. 7

    将数据框列添加到另一个数据框

  8. 8

    将数据框列添加到另一个数据框

  9. 9

    通过将一个数据帧的列与另一个数据帧的行相乘来获取一个数据帧

  10. 10

    如何基于另一个数据帧中的时间间隔在一个数据帧中添加新列

  11. 11

    将一个数据帧附加到另一个

  12. 12

    如何将数据帧附加到另一个数据帧的每一行?

  13. 13

    如何根据键值将转换为数组的数据帧添加为另一个数据帧的元素

  14. 14

    从另一个数据帧r添加/减去数据帧行

  15. 15

    基于没有长数据的另一个数据帧创建NA

  16. 16

    将数据帧与来自另一个数据帧的权重相乘

  17. 17

    将列从一个数据框添加到另一个python pandas

  18. 18

    在 R 中动态地将一个数据帧附加到另一个数据帧上

  19. 19

    将条件添加到另一个数据框上的条件的数据框

  20. 20

    根据另一个数据框中的值将列添加到数据框中

  21. 21

    根据来自另一个数据框的计数将列添加到数据框

  22. 22

    R Studio:将数据框的列添加到另一个数据框(合并)

  23. 23

    如何使用另一个数据框将列添加到数据框?

  24. 24

    将一个数据帧与另一个数据帧作为模板逐行合并

  25. 25

    将一个数据帧切片到另一个数据帧中

  26. 26

    R-使用另一个数据框的匹配值将新列添加到数据框

  27. 27

    如何从另一个数据帧更新一个数据帧的特定列

  28. 28

    将数据从一个数据帧拖入另一个

  29. 29

    将一个数据框的列添加到另一个数据框,以获取重叠列中的值

热门标签

归档