Исходя из комментариев к вопросу, я предполагаю, что вы хотите использовать sqldf со стандартным SQLite для этого. В этом случае это исправляет ошибки в select
. Мы предполагаем данные в примечании в конце (показаны воспроизводимым образом).
library(sqldf)
sqldf("select *,
case when GroupA = GroupB then 'OK'
when instr(',' || GroupB || ',', ',' || GroupA || ',')
then 'OK but different groups'
else 'review'
end status
from DF")
, что дает:
GroupA GroupB status
1 custid sd,custid,region-101%41,townsize OK but different groups
2 region region OK
3 townsize townsize OK
4 gender gender,(part2) OK but different groups
5 age agecat,birthmonth,gendor review
6 agecat birthmonth review
7 birthmonth edcat review
Это можно сделать альтернативно с помощью функции case_when
в пакет dplyr:
library(dplyr)
DF %>%
mutate(status = case_when(
GroupA == GroupB ~ "OK",
mapply(grepl, paste0(',', GroupA, ','), paste0(',', GroupB, ',')) ~
"OK but different groups",
TRUE ~ 'review'
))
Примечание
Входные данные в воспроизводимом виде:
Lines <- 'GroupA GroupB
custid sd,custid,region-101%41,townsize
region region
townsize townsize
gender gender,(part2)
age agecat,birthmonth,gendor
agecat birthmonth
birthmonth edcat'
DF <- read.table(text = Lines, header = TRUE, as.is = TRUE)