全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1049 4
2021-03-04
各位大佬,想请教一下怎么在for循环语句中,把2个变量传递到sqldf语句中
目前我写的循环如下:
for (i in 1:16) {
  for (j in 1:4){
    for (k in 1:4){
      tmp1 = paste0("R",j)
      tmp2 = paste0("M",j)
      Data[] <- sqldf(sprintf('select * from 原始数据 where 特征1 is "%s" and 特征2 is "%s"', tmp1, tmp2))
}
}
}
数据大概长这样:
账号    特征1     特征2
aa001  R1    M1
aa002  R2    M2
aa003  R3    M2
aa004  R1    M2
aa003  R3    M4
aa004  R1    M4


我尝试了一下,如果利用%s只传递1个变量是可以做的正确识别的,但两个就不行,不知道是不是格式不对
目标就是可以让sqldf 循环出来
Data[] <- sqldf('select * from 原始数据 where 特征1 is "R1到R4" and 特征2 is "M1到M4"')
感谢各位大佬

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2021-3-4 19:42:35
这个sqldf代码传参没问题。把sqldf这句改成
sqldf(sprintf('select * from 原始数据 where 特征1 is "%s" or 特征2 is "%s"', tmp1, tmp2))
试试

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-5 11:11:01
llb_321 发表于 2021-3-4 19:42
这个sqldf代码传参没问题。把sqldf这句改成
sqldf(sprintf('select * from 原始数据 where 特征1 is "%s" ...
还是不行,所有的每一个分池结果都一样,而且里面也是混杂着R1 R2
or 改成and 是一个都匹配不到
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-5 11:19:33
llb_321 发表于 2021-3-4 19:42
这个sqldf代码传参没问题。把sqldf这句改成
sqldf(sprintf('select * from 原始数据 where 特征1 is "%s" ...
好像是循环的原因,我尝试了一下把tmp2注释掉保留当前循环,特征2锁定为M1,发现所有表格匹配的全是R4M1的数据
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2021-3-5 12:28:18
最外层应该使用while循环语句
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群