【问题标题】:Is there a R function to compare the frequency of occurrences of row elements between two dataframes?是否有一个 R 函数来比较两个数据帧之间行元素的出现频率?
【发布时间】:2020-10-12 15:46:04
【问题描述】:

假设我有两个数据框

df1
Var1=c("a", "b", "c")
Freq= c(1, 3, 8)

df2
Var1= c("a", "b", "c")
Freq= c(5, 3, 8)

所以我希望我的输出是 y 和 z,因为它们的频率在两个数据帧之间匹配。

【问题讨论】:

  • 您能否分享使用 dput(df1) 和 dput(df2) 的可重现示例

标签: r dataframe compare frequency


【解决方案1】:

不妨试试这个:

#Code
df1$Var1[df1$Freq==df2$Freq]

输出:

[1] "y" "z"

使用的一些数据:

#Data 1
df1 <- structure(list(Var1 = c("x", "y", "z"), Freq = c(1L, 3L, 8L)), class = "data.frame", row.names = c(NA, 
-3L))

#Data 2
df2 <- structure(list(Var1 = c("x", "y", "z"), Freq = c(5L, 3L, 8L)), class = "data.frame", row.names = c(NA, 
-3L))

【讨论】:

    【解决方案2】:

    使用 dplyr:

    > df1
      Var1 Freq
    1    x    1
    2    y    3
    3    z    8
    > df2
      Var1 Freq
    1    x    5
    2    y    3
    3    z    8
    > df1 %>% inner_join(df2, by = c('Var1' = 'Var1', 'Freq' = 'Freq' )) %>% pull(1)
    [1] "y" "z"
    

    【讨论】:

      【解决方案3】:

      我们可以使用with

      with(df1, Var1[Freq == df2$Freq])
      #[1] "y" "z"
      

      数据

      df1 <- structure(list(Var1 = c("x", "y", "z"), Freq = c(1L, 3L, 8L)), class = "data.frame", row.names = c(NA, 
      -3L))
      
      
      df2 <- structure(list(Var1 = c("x", "y", "z"), Freq = c(5L, 3L, 8L)), class = "data.frame", row.names = c(NA, 
      -3L))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-26
        • 1970-01-01
        • 2018-09-27
        • 2021-06-13
        • 2020-10-02
        • 2019-01-02
        • 2021-09-16
        相关资源
        最近更新 更多