[R] Decimals in R/SQL

Rachel Licata RachelL at kff.org
Wed Apr 13 18:42:30 CEST 2011


Thanks Jim.  It appears the issue may only be in SQLite.  SS09 is a large table and here is a subset of the variables I am working with.  


SS09
	    ST			AGEP			PWGTP
33323    1                30                 130
33324    1                10                 186
33325    1                 2                 162
33326    1                80                  93
33327    1                29                 135
33328    1                66                  54
33329    1                62                  54
33330    1                21                 138
33331    1                29                 103
33332    1                 7                 144
33333    1                 5                 143

z <- dbGetQuery( connSQLite , "select ST, SUM(AGEP*PWGTP/SUM(PWGTP) as wgtage from ss09 group by ST")

ST wgtage
1   1     37
2   2     33
3   4     36
4   5     37
5   6     35

z <- dbGetQuery( connSQLite , "select ST, SUM(AGEP*PWGTP)*1.000000000/SUM(PWGTP)*1.00000000000000 as wgtage from ss09 group by ST")

ST   wgtage
1   1 37.57083
2   2 33.94322
3   4 36.14499
4   5 37.51233
5   6 35.65581

-----Original Message-----
From: jim holtman [mailto:jholtman at gmail.com] 
Sent: Wednesday, April 13, 2011 12:16 PM
To: Rachel Licata
Cc: r-help at r-project.org
Subject: Re: [R] Decimals in R/SQL

You at least have to provide a subset of 'ss09' so we can see what the
original data looks like.  I have not had any problems with decimals
in using sqldf.

> x <- as.data.frame(matrix(runif(100)*100, 10))
> x$key <- sample(1:3, 10, TRUE)
> require(sqldf)
> xsum <- sqldf('
+     select key, sum(V1 * V2) / sum(V3)
+         from x
+         group by key
+ ')
>
>
> xsum
  key sum(V1 * V2) / sum(V3)
1   1               19.38166
2   2               17.40503
3   3               71.48818
> dput(xsum)
structure(list(key = 1:3, `sum(V1 * V2) / sum(V3)` = c(19.3816573628268,
17.4050302312273, 71.4881812227571)), .Names = c("key", "sum(V1 * V2) / sum(V3)"
), row.names = c(NA, 3L), class = "data.frame")
>



On Wed, Apr 13, 2011 at 11:10 AM, Rachel Licata <RachelL at kff.org> wrote:
> Hello,
>
> When I am writing in sqldf or RSQLite I lose the decimals in my matrix.
> The only way I can get decimals is by multiplying by 1.00000, etc.  I
> have tried manipulating the options, but it is only effective once I
> multiply by 1.0000.
>
> I appreciate any suggestions!
>
> Thanks!
>
> Example:
>
> z <- sqldf ("select ST,
> SUM(AGEP*PWGTP)*1.000000000/SUM(PWGTP)*1.00000000000000 as wgtage from
> ss09 group by ST")
>
> z shouldn't be whole numbers.
>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?



More information about the R-help mailing list