首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R的mySQL查询中的过帐增量日期字段

问使用R的mySQL查询中的过帐增量日期字段
EN

Stack Overflow用户
提问于 2018-10-09 22:19:17
回答 1查看 82关注 0票数 0

我正在尝试使用DBI r包查询mySQL数据库中的一个表。但是,我需要通过每月更改日期字段并将其限制为1来从表中提取字段。

我在处理循环和sql查询文本时遇到了问题。我想创建一个循环来更改日期(每月),然后将其打印到数据库查询,该查询将提取匹配每月条件的所有数据。

这是我到目前为止的代码:

代码语言:javascript
复制
for (i in seq(0,12,1)){
 results <- dbGetQuery(myDB, paste("SELECT * FROM cost_and_price_period WHERE start_date <=", '01-[[i]]-2019'))
}

主要的问题是R不承认像++这样的后增量操作符,所以我知道我可以只进行12个单独的查询,然后对它们进行rbind,但我更喜欢做一个高效的查询。有谁有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-10-15 13:12:47

下面的解决方案可以让你知道如何处理你的问题。

DummyTable

代码语言:javascript
复制
   id names        dob
1   1    aa 2018-01-01
2   2    bb 2018-02-01
3   3    cc 2018-03-01
4   4    dd 2018-04-01
5   5    ee 2018-05-01
6   6    ff 2018-06-01
7   7    gg 2018-07-01
8   8    hh 2018-08-01
9   9    ii 2018-09-01
10 10    jj 2018-10-01
11 11    kk 2018-11-01
12 12    ll 2018-12-01
13 13    ll 2018-12-01

假设我们在MySQL中有上面的表。然后我们需要在每个月的第一天访问数据,并将整个记录存储为一个数据帧。

代码语言:javascript
复制
### Using for loop like from your question
n <- 12
df <- vector("list", n)

for (i in seq(1:12)){
 df[[i]] <- data.frame(dbGetQuery(pool, paste0("SELECT * FROM dummyTable WHERE dob = '2018-",i,"-01';" ))) # in iteration `i` corresponds for month number
}

df <- do.call(rbind, df)
### Using lapply(preferred way)
n <- seq(1:12)
df <- lapply(n, function(x){
  dbGetQuery(pool, paste0("SELECT * FROM dummyTable WHERE dob = '2018-",x,"-01';" ))
  })
df <- do.call(rbind, df)

因此,df数据帧的输出将给出来自MySQL的匹配记录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52723270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档