Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R sqldf空白联接生成意外结果_R_Sqldf - Fatal编程技术网

R sqldf空白联接生成意外结果

R sqldf空白联接生成意外结果,r,sqldf,R,Sqldf,我有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 = sqld

我有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
df1nm
fn1 ln1 fn2 ln2 fnm lnm
1 DRFA DRFA 1 1
2 NA DEFF AA DEFF 0 1
3 DDFF DRFA 1 0
4高炉和1高炉和1高炉
结果应为1和3中的fnm应为0。如何纠正它?

谢谢你选中了a.fn1导致1和3的
T
,因为该值是
'
而不是
'
。试试
a.fn1!=''

您选中了
a.fn1!=''
结果为1和3的T,因为值是
'
而不是
'
。试试
a.fn1!=“
?它将生成错误:错误:中出现意外的字符串常量:“”,因为您有
sqldf(“
您必须使用
内部您必须使用
a.fn1!=”
,而不是
a.fn1~=”这对我有用。因为FNM和LNM都是0,所以现在3行丢失。@ JamesTobin,您应该把它作为回答。谢谢。它是有效的。我把SAS中的代码转入了它们的“区分”和“”。我们如何知道空白是由“和”生成的。谢谢。