根据另一个数据框中的值计算一个数据框中的观察次数

我有两个非常大的数据框(5000 万和 150 万),其中的一些变量是相同的。我需要比较两者并在一个数据框中添加另一列,以提供另一个数据框中匹配观察的计数。

例如:DF1 和 DF2 都包含 id、date、age_grp 和性别变量。我想在 DF1 中添加另一列 (match_count),它显示 DF1.id = DF2.id 和 DF1.date = DF2.date 和 DF1.age_grp = DF2.age_grp 和 DF1.gender = DF2.gender 的计数

DF1

id  date    age_grp gender  val
101 20140110    1   1       666
102 20150310    2   2       777
103 20160901    3   1       444
104 20160903    4   1       555
105 20010910    5   1       888

DF2

id  date    age_grp gender  state
101 20140110    1   1        10
101 20140110    1   1        12
101 20140110    1   2        22
102 20150310    2   2        33

在上面的例子中,组合“id = 101, date = 20140110, age_grp = 1, sex = 1”在 DF2 中出现了两次,因此计数 2 和组合“id = 102, date = 20150010,age_grp = 2,gender = 2" 出现一次,因此计数为 1。

下面是我正在寻找的结果数据框

结果

id  date    age_grp gender  val match_count
101 20140110    1   1       666  2
102 20150310    2   2       777  1
103 20160901    3   1       444  0
104 20160903    4   1       555  0
105 20010910    5   1       888  0

这是我目前正在做的事情,它适用于小数据,但不适用于大数据。对于这种情况,即使在几个小时后它也没有返回任何结果。

注意:我已经浏览了这个线程,它没有解决规模问题

with(DF1
     , mapply(
        function(arg_id,arg_agegrp, arg_gender, arg_date){
            sum(arg_id == DF2$id
                & agegrp == DF2$agegrp
                & gender_bool == DF2$gender
                & arg_date == DF2$date)
          },
    id, agegrp, gender, date)
)

更新

Id 列不是唯一的,因此可能有两个观察结果,其中 id、date、agegrp 和 sex 可以相同,只有 val 列可以不同。

贝尼

这是我将通过使用解决此问题的方法 dplyr

df2$state=NULL#noted you do not need column state
Name=names(df2)
df2=df2%>%group_by_(.dots=names(df2))%>%dplyr::summarise(match_count=n())
Target=merge(df1,df2,by.x=Name,by.y=Name,all.x=T)
Target[is.na(Target)]=0

Target
   id     date age_grp gender val match_count
1 101 20140110       1      1 666           2
2 102 20150310       2      2 777           1
3 103 20160901       3      1 444           0
4 104 20160903       4      1 555           0
5 105 20010910       5      1 888           0

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据另一个数据框计算数据框中的列值

来自分类Dev

根据另一个数据框中的值对一个数据框进行子集

来自分类Dev

根据另一个数据框中的日期过滤数据框中的值

来自分类Dev

根据另一个数据集中的列值在一个数据框中创建列

来自分类Dev

根据条件从另一个数据框中复制列值

来自分类Dev

Python根据另一个数据框中的列值匹配列名

来自分类Dev

Python根据另一个数据框中的列值匹配列名

来自分类Dev

根据另一个数据框中的匹配数据更新一个数据框中的值

来自分类Dev

如果另一个数据框中存在一个数据框值,则从该数据框中获取一个值

来自分类Dev

根据另一个数据框从数据框中设置子集/选择列

来自分类Dev

根据另一个数据框/列表在数据框中的列子集

来自分类Dev

根据Python中的另一个数据框更新数据框

来自分类Dev

根据python中另一个数据框的2列过滤数据框

来自分类Dev

根据另一个数据框中的信息对数据框进行分类

来自分类Dev

根据R中另一个数据框中的比较值更改一个数据框中的值

来自分类Dev

根据另一个数据框中的日期计算一个数据框的数量总和(Python)

来自分类Dev

从另一个数据框中更新熊猫数据框中的特定值

来自分类Dev

根据另一个数据框中的值在数据框中创建列表列

来自分类Dev

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

来自分类Dev

根据id列中的公共值从另一个数据框中减去数据框的行

来自分类Dev

熊猫:根据另一个数据框中的值在数据框中添加新列

来自分类Dev

根据匹配的值,使用另一个数据框中的值更新一个数据框中的列

来自分类Dev

根据关键列值熊猫将一个数据框中的行与另一个数据框中的行匹配

来自分类Dev

根据另一个数据框替换一个数据框中的列中的多个值

来自分类Dev

如何根据另一个数据框中的查找值替换熊猫数据框值?

来自分类Dev

Python根据另一个数据框值中存在的列索引填充数据框值

来自分类Dev

根据条件,将数据框的某些值替换为另一个数据框中的值

来自分类Dev

从一个数据框中减去另一个数据

来自分类Dev

根据另一个数据框的值填充一个数据框的值

Related 相关文章

  1. 1

    根据另一个数据框计算数据框中的列值

  2. 2

    根据另一个数据框中的值对一个数据框进行子集

  3. 3

    根据另一个数据框中的日期过滤数据框中的值

  4. 4

    根据另一个数据集中的列值在一个数据框中创建列

  5. 5

    根据条件从另一个数据框中复制列值

  6. 6

    Python根据另一个数据框中的列值匹配列名

  7. 7

    Python根据另一个数据框中的列值匹配列名

  8. 8

    根据另一个数据框中的匹配数据更新一个数据框中的值

  9. 9

    如果另一个数据框中存在一个数据框值,则从该数据框中获取一个值

  10. 10

    根据另一个数据框从数据框中设置子集/选择列

  11. 11

    根据另一个数据框/列表在数据框中的列子集

  12. 12

    根据Python中的另一个数据框更新数据框

  13. 13

    根据python中另一个数据框的2列过滤数据框

  14. 14

    根据另一个数据框中的信息对数据框进行分类

  15. 15

    根据R中另一个数据框中的比较值更改一个数据框中的值

  16. 16

    根据另一个数据框中的日期计算一个数据框的数量总和(Python)

  17. 17

    从另一个数据框中更新熊猫数据框中的特定值

  18. 18

    根据另一个数据框中的值在数据框中创建列表列

  19. 19

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

  20. 20

    根据id列中的公共值从另一个数据框中减去数据框的行

  21. 21

    熊猫:根据另一个数据框中的值在数据框中添加新列

  22. 22

    根据匹配的值,使用另一个数据框中的值更新一个数据框中的列

  23. 23

    根据关键列值熊猫将一个数据框中的行与另一个数据框中的行匹配

  24. 24

    根据另一个数据框替换一个数据框中的列中的多个值

  25. 25

    如何根据另一个数据框中的查找值替换熊猫数据框值?

  26. 26

    Python根据另一个数据框值中存在的列索引填充数据框值

  27. 27

    根据条件,将数据框的某些值替换为另一个数据框中的值

  28. 28

    从一个数据框中减去另一个数据

  29. 29

    根据另一个数据框的值填充一个数据框的值

热门标签

归档