【问题标题】:Joining dataframes in R (1:n relation)在 R 中加入数据帧(1:n 关系)
【发布时间】:2018-08-25 16:24:18
【问题描述】:

我有一个data.frame df1

df1 <- data.frame(id=1:10)

我还有第二个 data.frame df2

df2 <- data.frame(id=1:100, key=sample(1:10,100,replace=T), var1=sample(c(TRUE, FALSE),100, replace=T), var2=sample(c("X", "Y"),100, replace=T))

变量df2$key是二级键,指向变量df1$id

现在对于df1 中的每个条目,我想在特定条件下检查df2 中有多少条目。

一个例子: 如果df1$id==5 我想创建一个变量df1$count 来计算data.frame df2 中的条目数,其中df2$key==5df2$var==TRUE

感谢您的帮助!

【问题讨论】:

    标签: r dataframe join tidyverse


    【解决方案1】:

    你可以在基础 R 中做到这一点:

    merge(df1, aggregate(var1 ~ key, df2, FUN = sum), 
          by.x = "id", by.y = "key", all.x = TRUE)
       id var1
    1   1    3
    2   2    1
    3   3    4
    4   4    6
    5   5    9
    6   6    4
    7   7    5
    8   8    7
    9   9    4
    10 10    3
    

    或使用 dplyr:

    library(dplyr)
    
    df2 %>% 
      filter(var1) %>% 
      count(key) %>% 
      right_join(df1, by = c("key" = "id"))
    

    在这两种情况下,我们先进行计数,然后将结果合并到 df1。

    【讨论】:

      猜你喜欢
      • 2020-08-19
      • 2018-03-31
      • 2018-11-15
      • 1970-01-01
      • 2020-02-14
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      相关资源
      最近更新 更多