What's the R statement responding to SQL's 'in' statement?

前端 未结 2 1142
慢半拍i
慢半拍i 2021-01-14 10:22

a case

df=data.frame(id=c(101,102,102,103,104,104,104),
         calmonth=c(\'01\',\'01\',\'01\',\'01\',\'01\',\'01\',\'02\'),
         product=c(\'         


        
相关标签:
2条回答
  • 2021-01-14 10:58

    Your SQL statement doesn't produce quite the result you show. It returns (selects) the IDs only not that table and the merged column? No?

    SELECT id 
    FROM   df 
    WHERE  calmonth = '01' 
           AND product = "apple" 
           AND id IN (SELECT id 
                      FROM   df 
                      WHERE  product = "htc" 
                             AND calmonth = "01") 
    

    in R that is roughly:

    with(df, 
    intersect(
    id[calmonth=='01' & product=='apple'], 
    id[product=="htc" & calmonth=="01"]))
    
    [1] 102 104
    
    0 讨论(0)
  • 2021-01-14 11:19

    If you prefer SQL syntax then use sqldf package:

    library(sqldf)
    sqldf("
          select * 
          from (
                select id,
                       calmonth,
                       group_concat(product, ' & ') product
                from df
                group by id, calmonth
               ) 
          where product='apple & htc' and
                calmonth='01'
          ")
    
    0 讨论(0)
提交回复
热议问题