У меня есть соединение df1 и df2 и sql:
df1 <- data.frame(fn1 = c('','NA','' ,'BF'),
ln1 = c('DRFA', 'DEFF','DDFF', 'ANCD'))
df2 <- data.frame(fn2 = c('','AA','BB', 'BF'),
ln2 = c('DRFA', 'DEFF','FFFF', 'ANCD'))
library(sqldf)
nm = sqldf("
select a.*, b.*,
(a.fn1 !=' ' and a.fn1 == b.fn2 ) as fnm,
(a.ln1 == b.ln2) as lnm
from df1 a, df2 b
where (fnm + lnm)>= 1
")
> nm
fn1 ln1 fn2 ln2 fnm lnm
1 DRFA DRFA 1 1
2 NA DEFF AA DEFF 0 1
3 DDFF DRFA 1 0
4 BF ANCD BF ANCD 1 1
В результате должно получиться, что fnm в 1 и 3 должно быть 0. Как это исправить?
Спасибо
a.fn1 != ' '
, что приводит к T для 1 и 3, потому что значение равно''
, а не' '
. попробоватьa.fn1 != ""
? - person James Tobin   schedule 24.01.2014sqldf("
, вы должны использовать'
внутри - person James Tobin   schedule 24.01.2014a.fn1!=''
, а неa.fn1~=""
. Это подходит для меня. Строка 3 теперь отсутствует, потому что fnm и lnm равны 0. - person jlhoward   schedule 24.01.2014