频率计数不匹配的返回记录

时间:2017-12-18 20:45:14

标签: r

我正在研究R中的数据集,其中WO可以具有值“K”和“B”。我希望返回WO,其中每个WO的频率在“K”和“B”记录之间不匹配。例如下表:

See table

PropertySourcesPlaceholderConfigurer

我希望返回917595,因为3不等于6.但是,应该返回1011033,因为它的频率匹配。

2 个答案:

答案 0 :(得分:0)

重新整形数据让您对频率值进行比较。

library(dplyr)
library(reshape2)

dframe <- 
  "WO,Invoice,freq
917595,B,3
917595,K,6
1011033,B,2
1011033,K,2" %>% 
  read.csv(text = .,
           stringsAsFactors = FALSE) 

  dcast(dframe,
        WO ~ Invoice,
        value.var = "freq") %>% 
  filter(B != K)

答案 1 :(得分:0)

我们可以使用base R

duplicated合作完成
df1[!(duplicated(df1[c(1, 3)])|duplicated(df1[c(1,3)], fromLast = TRUE)),]
#      WO Invoice freq
#1 917595       B    3
#2 917595       K    6

或另一种选择是按'WO'进行分组,然后检查if'freq'中unique个元素的数量是否大于1

library(data.table)
setDT(df1)[, if(uniqueN(freq)>1) .SD, WO]
#       WO Invoice freq
#1: 917595       B    3
#2: 917595       K    6