我正在处理一些时间数据,但在将时差转换为年和月时遇到问题。
我的数据看起来或多或少是这样的,
dfn <- data.frame(
Today = Sys.time(),
DOB = seq(as.POSIXct('2007-03-27 00:00:01'), len= 26, by="3 day"),
Patient = factor(1:26, labels = LETTERS))
DOB
首先,我从今天的数据 ( )中减去出生数据 ( Today
)。
dfn$ageToday <- dfn$Today - dfn$DOB
这给了我Time difference in days
.
dfn$ageToday
Time differences in days
[1] 1875.866 1872.866 1869.866 1866.866 1863.866
[6] 1860.866 1857.866 1854.866 1851.866 1848.866
[11] 1845.866 1842.866 1839.866 1836.866 1833.866
[16] 1830.866 1827.866 1824.866 1821.866 1818.866
[21] 1815.866 1812.866 1809.866 1806.866 1803.866
[26] 1800.866
attr(,"tzone")
[1] ""
这就是我的问题的第一部分;如何将此差异转换为年和月(四舍五入为月)?(即 4.7、4.11 等)
我阅读了?difftime
手册页和?format
,但我没有弄明白。
任何帮助,将不胜感激。
此外,我想融化我的最终对象,如果我尝试使用这个命令在上面的数据框上使用融化,
require(plyr)
require(reshape)
mdfn <- melt(dfn, id=c('Patient'))
我收到了我从未见过的奇怪警告
Error in as.POSIXct.default(value) :
do not know how to convert 'value' to class "POSIXct"
所以,我的第二个问题是;如何在变量melt
旁边创建时间差异POSIXct
?dfn$ageToday
如果我没有一切就融化,就像魅力一样。
谢谢,埃里克