我正在寻找一种方法来推导出能够准确处理出生日期的年龄= 2月29日.我已尝试new_interval
在lubridate
包装上使用该功能 ,但对于2004年2月29日出生的孩子,这将在2006年2月28日返回2岁.孩子将在2006年3月1日2岁.
我也尝试过使用这个decimal_date
函数,但是当date = 01-Jan-2006时,这会给我一个错误.
我正在使用R版本2.15.3(2013-03-01) - "安全毯"
这是我的代码:
library (lubridate)
MyTable <- data.frame(Eval.Date = c(as.Date("2006-01-01"),
as.Date(0:5, origin = "2006-02-26")),
Birth.Date = as.Date("2004-02-29"))
MyTable$Age <- floor(new_interval(MyTable$Birth.Date, MyTable$Eval.Date) /
duration(num = 1, units = "years"))
MyTable$DecDate <- decimal_date(MyTable$Eval.Date)
MyTable[,c("Birth.Date","Eval.Date","Age","DecDate")]
Run Code Online (Sandbox Code Playgroud)
输出:
Birth.Date Eval.Date Age DecDate
1 2004-02-29 2006-01-01 1 NaN
2 2004-02-29 2006-02-26 1 2006.153
3 2004-02-29 2006-02-27 1 2006.156
4 2004-02-29 2006-02-28 2 2006.159
5 2004-02-29 2006-03-01 2 2006.162
6 2004-02-29 2006-03-02 2 2006.164 …
Run Code Online (Sandbox Code Playgroud) 我想为 R 数据框中的日期预分配空间。
要为字符和数字预先分配空间,我会写
MyDataframe <- data.frame(Name = character(10),
Tickets = numeric(10))
Run Code Online (Sandbox Code Playgroud)
在为日期预分配空间旁边我会添加什么?这不起作用...
# DOES NOT WORK
MyDataframe <- data.frame(Name = character(10),
Tickets = numeric(10)
Date = Date(10))
Run Code Online (Sandbox Code Playgroud)
目前,我将列定义为数字,然后强制为日期,但这似乎不太理想。
谢谢
我正在尝试使用RPostgreSQL和R v2.14.2将表读入R.
我的RPostgreSQL版本列为0.3-2,已于2012年5月16日下载.
我的DBI版本列为0.2-5,已于2012年5月16日下载.
我可以打开数据库,并列出表格.我要打开的表格显然存在,但是,当我尝试阅读它时,我收到一条错误消息.我不确定错误是在我的代码中还是在数据库的设置方式中.
library(RPostgreSQL)
# Loading required package: DBI
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host = 'freda.freda.com', dbname = 'test', user = 'fredak', password = 'xxxx')
dbListTables(con)
# [1] "chemistry”
# [2] "ecog”
# [3] "hematology"
dbExistsTable(con, "ecog")
# [1] FALSE
MyTable <- dbReadTable(con, "ecog")
# Error in postgresqlExecStatement(conn, statement, ...) :
# RS-DBI driver: (could not Retrieve the result : ERROR: relation "ecog" does not exist
# LINE 1: SELECT * from "ecog"
# ^
# …
Run Code Online (Sandbox Code Playgroud)