我对这个网站比较新,所以请原谅我,如果我的问题对你们来说有点模糊。我也意识到这个主题有很多线索,但我觉得它们没有特别回答我的问题,因为它们几乎都是关于将yy / mm / dd改为dd / mm / yy,反之亦然。
总之我想要什么?我希望我目前的格式只改为一年。
我的列中包含此格式的日期。
31OCT2016:23:52:00.000
我在许多主题中都看到过你可以使用格式命令,但它们就是这样的;
dates <- c("05/27/84", "07/07/05")
我有超过100,000个观察结果因此无法手动完成。 所以我试过了;
mydata$dates <- format(as.Date(mydata$dates), "%Y")
但那没用。我在这个网站上看到了正确的值
http://www.statmethods.net/input/dates.html
但它没有说明如何摆脱小时分钟和秒钟。
那么最简单的方法是将它全部剥离到一年只有一年?
答案 0 :(得分:1)
Function something(inString As String) As String
Dim lastSlash As Integer
Dim firstPart As String, lastPart As String
lastSlash = Len(inString) - InStr(1, StrReverse(inString), "/")
firstPart = Mid(inString, 1, lastSlash)
lastPart = Mid(inString, lastSlash + 2, 9999)
something = firstPart & "/" & Replace(firstPart, "/", "_") & "_" & lastPart & "_1.jpg"
End Function
是你的朋友。确切地说,函数Lubridate
:
我将生成一些样本数据,其格式与您的示例相同,因此我的代码可以重现。不要太担心。出于您的目的,您可以直接跳转到转换部分。
dmy_hms
所以基本上变量#------------------------------------------------------------------------------------------
#This code block is entirely for generating reproducible sample data
d <- sample(1:27,10,T)
mon <- toupper(sample(month.abb,10,T))
y <- sample(2000:2017,10,T)
h <- sample(0:23,10,T)
min <- sample(0:59,10,T)
s <- sample(0:59,10,T)
#load package
library(lubridate)
dts <- sprintf('%02d%s%s:%s:%s:%s.000',d,mon,y,h,min,s)
> dts
[1] "01JAN2012:12:6:53.000" "01NOV2010:0:19:47.000" "03SEP2000:9:45:3.000" "25NOV2009:21:39:57.000" "08DEC2015:19:27:36.000"
[6] "23MAR2009:13:39:40.000" "03JUN2010:14:54:50.000" "03APR2002:6:34:45.000" "19NOV2012:5:17:29.000" "02FEB2003:0:3:59.000"
#------------------------------------------------------------------------------------------
是你想要转换的日期的列:
dts
然后为了获得这些年份,您可以使用#conversion
> dmy_hms(dts)
[1] "2012-01-01 12:06:53 UTC" "2010-11-01 00:19:47 UTC" "2000-09-03 09:45:03 UTC" "2009-11-25 21:39:57 UTC"
[5] "2015-12-08 19:27:36 UTC" "2009-03-23 13:39:40 UTC" "2010-06-03 14:54:50 UTC" "2002-04-03 06:34:45 UTC"
[9] "2012-11-19 05:17:29 UTC" "2003-02-02 00:03:59 UTC"
函数:
year
因此,假设您想要在> year(dmy_hms(dts))
[1] 2012 2010 2000 2009 2015 2009 2010 2002 2012 2003
内执行所有操作,您的代码可能如下所示:
data.frame
这是一个带有一些变量的数据框和带有日期的列。
# example dataframe
dframe <- data.frame(variable=c('A','B','C'),dates=sample(dts,3))
因此,要转换日期,我们只需执行> dframe
variable dates
1 A 15JAN2000:0:37:6.000
2 B 13DEC2016:8:34:28.000
3 C 18AUG2005:2:27:16.000
如果我们再次查看dframe$dates <- year(dmy_hms(dframe$dates))
,我们可以看到转化成功:
dframe