【问题标题】:How to compare the count of unique values如何比较唯一值的计数
【发布时间】:2017-06-01 11:43:36
【问题描述】:

我需要检查变量PPT中每个唯一值在A中的元素个数是否等于PPT中每个唯一值在B中的元素个数,是否有任何值只对A或只有给B。

例如:

PPTa <- c("ppt0100109","ppt0301104","ppt0100109","ppt0100109","ppt0300249","ppt0100109","ppt0300249","ppt0100109","ppt0504409","ppt2303401","ppt0704210","ppt0704210","ppt0100109")
CNa <- c(110,54,110,110,49,10,49,110,409,40,10,10,110)
LLa <- c(150,55,150,150,45,15,45,115,405,45,5,15,50)
A <-data.frame(PPTa,CNa,LLa)

PPTb <- c("ppt0100200","ppt0300249","ppt0100109","ppt0300249","ppt0100109","ppt0764091","ppt2303401","ppt0704210","ppt0704210","ppt0100109")
CNb <- c(110,54,110,110,49,10,49,110,409,40)
LLb <- c(150,55,150,150,45,15,45,115,405,45)
B <-data.frame(PPTb,CNb,LLb)

在这种情况下,我们有这些唯一值会出现一定次数:

A$PPTa       TIMES
"ppt0100109" 6
"ppt0301104" 1
"ppt0300249" 2
"ppt0504409" 1
"ppt2303401" 1
"ppt0704210" 2

B$PPTb       TIMES
"ppt0100200" 1
"ppt0300249" 2
"ppt0100109" 3
"ppt0764091" 1
"ppt2303401" 1
"ppt0704210" 2

如果唯一值在 A 和 B 中都存在且具有相同数量的元素,我想创建一个值为 0 的新矩阵(或您可以建议的任何内容),如果两个数据帧中都存在唯一值,则值为 1 A 和 B 但元素的数量不同,如果该值仅存在于两个数据帧之一中,则值为 2。 比如:

A$PPTa       TIMES  OUTPUT
"ppt0100109" 6      1
"ppt0301104" 1      2
"ppt0300249" 2      0
"ppt0504409" 1      2
"ppt2303401" 1      0
"ppt0704210" 2      0

B$PPTb       TIMES  OUTPUT
"ppt0100200" 1      2
"ppt0300249" 2      0
"ppt0100109" 3      1
"ppt0764091" 1      2
"ppt2303401" 1      0
"ppt0704210" 2      0

【问题讨论】:

    标签: r compare


    【解决方案1】:

    您可以使用嵌套的ifelse 语句,

    ifelse(do.call(paste0, A) %in% do.call(paste0, B), 0, ifelse(A$PPTa %in% B$PPTb, 1, 2))
    #[1] 1 0 2 2 0 0
     ifelse(do.call(paste0, B) %in% do.call(paste0, A), 0, ifelse(B$PPTb %in% A$PPTa, 1, 2))
    #[1] 1 2 0 0 2 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-27
      • 2018-03-13
      • 2021-10-18
      • 2015-07-19
      • 1970-01-01
      • 2016-03-02
      • 2021-12-06
      • 2020-12-05
      相关资源
      最近更新 更多