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(\'
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
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'
")