标签: sqldf

sqldf和rmysql之间的区别?

sqldfRMySQL都是R包,允许访问MySQL数据库(前者使用后者).它们都允许这样的语句:

RMySQL:"运行任意SQL语句并提取其所有输出(返回data.frame):"

dbGetQuery(con, "select count(*) from a_table")
dbGetQuery(con, "select * from a_table") 
Run Code Online (Sandbox Code Playgroud)

sqldf:

library(sqldf)
sqldf("select * from iris limit 5")
sqldf("select count(*) from iris")
sqldf("select Species, count(*) from iris group by Species")
# create a data frame
DF <- data.frame(a = 1:5, b = letters[1:5])
Run Code Online (Sandbox Code Playgroud)

那有什么区别?sqldf提供的RMySQL没有提供什么?

r rmysql sqldf

1
推荐指数
1
解决办法
1531
查看次数

使用R选择从哪里开始的程序

我有两个数据帧,这是第一个:

df <- data.frame(p=letters[1:3],y1=c(2,4,3))
df
  p y1
1 a 2
2 b 4
3 c 3
Run Code Online (Sandbox Code Playgroud)

第二个:

df2 <- data.frame(p=rep(letters[1:3],c(3,2,4)),y2=c(3,1,1,4,3,4,3,3,1),d=rep(1,length=9))
df2
  p y2 d
1 a 3 1
2 a 1 1
3 a 1 1
4 b 4 1
5 b 3 1
6 c 4 1
7 c 3 1
8 c 3 1
9 c 1 1
Run Code Online (Sandbox Code Playgroud)

我想要做的是获取这些行df2,其中p(a,b,c等)的每个值在哪里d=1(在这种情况下是所有行),y2大于y1pin 分组df.

因为这个原因也许是没有意义的,需要两条线被踢:第1行df2 …

r plyr sqldf data.table

1
推荐指数
1
解决办法
121
查看次数

R-sqldf错误原始vs双

我有一个矢量限制,有一个分数的限制:

 [1]  0.000000  7.025894  9.871630 12.411131 15.155998 18.099176 21.431354 25.391163 30.616550 40.356630
Run Code Online (Sandbox Code Playgroud)

我创建了一个表来对其他客户进行分类:

lims[1]<- -0.00001 
a<-data.frame(lims[2:10])
colnames(a)<-'maxSc'
a<-rbind(a, 100)
lims<-data.frame(lims)
lims$maxSc<-a
colnames(lims)<-c('minSc', 'maxSc')


> class(lims)
[1] "data.frame"
Run Code Online (Sandbox Code Playgroud)

所以我的结果是:

> lims
       minSc      maxSc
1  -0.000010   7.025894
2   7.025894   9.871630
3   9.871630  12.411131
4  12.411131  15.155998
5  15.155998  18.099176
6  18.099176  21.431354
7  21.431354  25.391163
8  25.391163  30.616550
9  30.616550  40.356630
10 40.356630 100.000000
Run Code Online (Sandbox Code Playgroud)

我想根据这些限制和字段sc对另一个表(火车)进行分类:

>class(train$sc)
[1] "numeric"
> class(train$target)
[1] "integer"
Run Code Online (Sandbox Code Playgroud)

但是当我运行以下操作时出现错误:

library(sqldf)
sqldf("Select b.minSc, b.maxSc, count(*) as total, sum(target) as …
Run Code Online (Sandbox Code Playgroud)

r sqldatatypes sqldf

1
推荐指数
1
解决办法
4222
查看次数

在sqldf中使用strftime提取年份

我正在尝试使用 SQLDF 函数从日期字段中提取年份。我希望 SQL 的 DATEPART 能够工作,但可惜我需要使用 STRFTIME 来代替(我认为)。当我应用代码时,我在 YYYY 下得到 NA。我的代码如下:

dw_Calendar = read.csv("C:\dw_Calendar.csv")
# ensure that the date field is in a date format
dw_Calendar$newDate <- as.Date(dw_Calendar$FullDate)

CalendarSum <- sqldf("
select newDate,
strftime('%U', newDate) as YYYY
from dw_Calendar
")
Run Code Online (Sandbox Code Playgroud)

r strftime sqldf

1
推荐指数
1
解决办法
4300
查看次数

R sprintf在sqldf中就像

我想在R中使用sqldf进行循环查询,以选择日期为“ 11/12/2015”且在9AM的所有非NULL X.1变量。范例:

StartDate              X.1
11/12/2015 09:14        A
11/12/2015 09:36        
11/12/2015 09:54        A
Run Code Online (Sandbox Code Playgroud)

日期在从其他查询生成的变量中

nullob<-0
dayminnull<-as.numeric(sqldf("SELECT substr(Min(StartDate),1,03)as hari     from testes")) # this produce "11/12/2015"
  for (i in 1 : 12){
    dday<-mdy(dayminnull)+days(i) #go to next day
    sqlsql <- sprintf("SELECT count([X.1]) FROM testes where StartDate like '% \%s 09: %'", dday)
    x[i]<-sqldf(sqlsql)
    nullob<-nullob+x[i]
}
Run Code Online (Sandbox Code Playgroud)

它带有错误:sprintf(“ SELECT count([X.1])from Testes WHERE StartDate like'%% s 09%'”中的错误,:无法识别的格式规范'%'请打扰。

printf r sqldf

1
推荐指数
1
解决办法
952
查看次数

为什么两个数字分割,结果为零?在R中使用SQLDF

我在R中使用SQLDF.我从第2列和第3列计算两个不同的值.我想计算第2列/第3列,但结果始终为零.为什么?

这是我的代码:

prouterInboundin4hours<-sqldf(

  " select `1st Segment Delivered Success Day`,   count (DISTINCT case  when 
  `Inbound Lead Time (hour)` < 4 then `First segment Order Number` END) 
  as 'Inbound< 4 hours Volume', 
  count (`First segment Order Number`) as 'Delivered Success Volume',
  count (DISTINCT case  when `Inbound Lead Time (hour)` < 4 then `First 
  segment Order Number` END) / count (`First segment Order Number`) 
  from prouter
   where Year ='Year2017'
  group by `1st Segment Delivered Success Day`
  "
   )
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述

r count sqldf

1
推荐指数
1
解决办法
615
查看次数

在R上针对具有NA的行运行SQL查询

我正在尝试使用SQLDF在R中运行sql查询,但它一直返回错误:rsqlite_send_query(conn @ ptr,statement)中的错误:无此类列:NA。

查询如下所示:

sqldf(“选择ID,电话号码,从sdi_update_2输入,其中类型= NA限制20”)

任何帮助将不胜感激。

谢谢

for-loop r na sqldf

1
推荐指数
1
解决办法
320
查看次数

使用一个表中的多列和另一表中的单列更新值

我有下表lc

a   b   c   d 
co  NA  co  1
co  NA  co  84
us  co  us  6
NA  co  NA  54
us  NA  NA  4
Run Code Online (Sandbox Code Playgroud)

还有另一张桌子 ro

d   value
bb  1
co  0.5
mn  0.03
us  2
Run Code Online (Sandbox Code Playgroud)

我想lc使用中的值更新其中的值ro以获取以下内容:

a    b    c    d 
0.5  NA   0.5  1
0.5  NA   0.5  84
2    0.5  2    6
NA   0.5  NA   54
2    NA   NA   4
Run Code Online (Sandbox Code Playgroud)

我有代码:

lc <- sqldf(c("UPDATE lc SET a = (SELECT ro.value FROM ro …
Run Code Online (Sandbox Code Playgroud)

sql-server r sql-update sqldf

1
推荐指数
1
解决办法
260
查看次数

使用sqldf仅显示count(*)> 2000的行

我试图使用下面的代码选择除前2000行以外的所有行,但是我收到以下错误.

new_table = sqldf("select units, count(*)
                   from old_table
                   group by units
                   where count(*) > 2000")
Error in sqliteExecStatement(con, statement, bind.data) : 
  RS-DBI driver: (error in statement: near "where": syntax error)
Run Code Online (Sandbox Code Playgroud)

sql r sqldf

0
推荐指数
1
解决办法
147
查看次数

SQLDF R:计算数据框中的唯一值

我有一个只有一列的数据框。有 10 行。

(4.0 * 3.0)
(4.0 * 3.0)
(2.0 * (1.0 * (1.0 * 6.0)))
(4.0 * (3.0 * 1.0))
(6.0 * 2.0)
(6.0 * 2.0)
(2.0 * 6.0)
(2.0 * 6.0)
(2.0 * 6.0)
(6.0 * 2.0)
Run Code Online (Sandbox Code Playgroud)

我需要提取列中的唯一值及其出现的次数。使用 sqldf 包我能够获得唯一的值。但不是计数。

询问:

sqldf("SELECT V1, COUNT(DISTINCT V1) as DinctC from dataset GROUP BY V1")
Run Code Online (Sandbox Code Playgroud)

输出:

                           V1 DinctC
1 (2.0 * (1.0 * (1.0 * 6.0)))      1
2                 (2.0 * 6.0)      1
3         (4.0 * (3.0 * 1.0))      1
4                 (4.0 …
Run Code Online (Sandbox Code Playgroud)

r dataframe sqldf

0
推荐指数
1
解决办法
1997
查看次数

只要我没有完美地编写sqldf查询,R就会崩溃

sessionInfo()

R版本3.4.1(2017-06-30)平台:x86_64-pc-linux-gnu(64位)运行于:Ubuntu 16.04.3 LTS

Matrix产品:默认BLAS:/home/roughmar/anaconda3/lib/R/lib/libRblas.so LAPACK:/home/roughmar/anaconda3/lib/R/lib/libRlapack.so

locale:[1] LC_CTYPE = en_US.UTF-8 LC_NUMERIC = C
[3] LC_TIME = en_IE.UTF-8 LC_COLLATE = en_US.UTF-8 [5] LC_MONETARY = en_IE.UTF-8 LC_MESSAGES = en_US.UTF-8 [ 7] LC_PAPER = en_IE.UTF-8 LC_NAME = C [9] LC_ADDRESS = C LC_TELEPHONE = C [11] LC_MEASUREMENT = en_IE.UTF-8 LC_IDENTIFICATION = C

附加基础包:[1] stats graphics grDevices utils
数据集方法库

通过命名空间加载(而不是附加):[1] compiler_3.4.1 R6_2.2.1 magrittr_1.5 IRdisplay_0.4.4 [5] pbdZMQ_0.2-6
tools_3.4.1 crayon_1.3.2 uuid_0.1-2 [9] stringi_1.1.5
IRkernel_0.7.1 jsonlite_1.5 stringr_1.2.0 [13] digest_0.6.12
repr_0.10 evaluate_0.10

每当我加载sqldf库时,我都会遇到:

加载所需的包:gsubfn

加载所需的包:proto

无法加载tcltk.将使用较慢的R代码.

加载所需的包:RSQLite

我编写的任何sqldf查询运行完美,结果如预期.当我在表达式上犯错误时,问题就会出现,例如额外的逗号,或者误导变量,或者你可能会想到通常会输出错误的任何内容. …

r sqldf anaconda ubuntu-16.04

0
推荐指数
1
解决办法
204
查看次数

Dplyr过滤多个类似条件

我试图在dplyr中进行过滤,其中列就像某些观察一样.我可以使用sqldf作为

Test <- sqldf("select * from database 
          Where SOURCE LIKE '%ALPHA%' 
          OR SOURCE LIKE '%BETA%' 
          OR SOURCE LIKE '%GAMMA%'")
Run Code Online (Sandbox Code Playgroud)

我试图使用以下不会返回任何结果:

database %>% dplyr::filter(SOURCE %like% c('%ALPHA%', '%BETA%', '%GAMMA%'))
Run Code Online (Sandbox Code Playgroud)

谢谢

r sqldf dplyr

0
推荐指数
2
解决办法
1701
查看次数

如何使用sqldf包在R中找到标准偏差?

我可以用sqldf包来计算"avg""count"和"sum".我能定义自己的标准偏差函数吗?

我真的有必要使用sqldf来计算标准偏差.

sqlite r sqldf

-1
推荐指数
1
解决办法
1997
查看次数