楼主: K1ngFjsh
1124 4

[问答] R语言:循环中带入sqldf语句 [推广有奖]

  • 0关注
  • 0粉丝

大专生

53%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
244 点
帖子
27
精华
0
在线时间
63 小时
注册时间
2021-3-4
最后登录
2023-6-2

楼主
K1ngFjsh 发表于 2021-3-4 18:16:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
各位大佬,想请教一下怎么在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"')
感谢各位大佬

二维码

扫码加我 拉你入群

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

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

关键词:R语言 sql paste for循环 past

沙发
llb_321 在职认证  发表于 2021-3-4 19:42:35
这个sqldf代码传参没问题。把sqldf这句改成
sqldf(sprintf('select * from 原始数据 where 特征1 is "%s" or 特征2 is "%s"', tmp1, tmp2))
试试

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
K1ngFjsh 发表于 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 是一个都匹配不到

板凳
K1ngFjsh 发表于 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的数据

报纸
K1ngFjsh 发表于 2021-3-5 12:28:18
最外层应该使用while循环语句

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-22 10:21