我的数据集如下所示:
dsn register_at
1 AC000W000014612 Thu Mar 02 21:34:30 UTC 2017
2 AC000W000016124 Tue Mar 14 19:40:57 UTC 2017
3 AC000W000016219 Tue Apr 14 19:29:10 UTC 2017
我需要为每个dsn获得像Mar,Apr等月份规范。如何从变量寄存器中仅获取月份规格?
答案 0 :(得分:0)
您可以substr
使用Month names
功能substr(df$register_at, 5, 7)
始终处于同一位置。
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("test.xls")
objExcel.Application.Visible = True
objExcel.Workbooks.Add
objExcel.Cells(1, 1).Value = "Test value"
objExcel.Application.Run "Macro.TestMacro()"
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Echo "Finished."
WScript.Quit
答案 1 :(得分:0)
为了将来参考,我会尝试以更标准化的格式编写日期,例如年 - 月 - 日时:分:秒。
但是,我知道我们可能无法始终控制数据的格式(boo)。我只是想提一下,如果它采用更标准化的格式,那么lubridate
包就会有一个名为floor_date
的函数,可以轻松实现这一目标。
对于此特定实例,您可以只用空格分割字符串,并在该分割后仅选择第二个元素:
> # create data frame
> # note that, per your question, dsn and register_at are factors
> d <- data.frame(dsn=factor(c("AC000W000014612", "AC000W000016124", "AC000W000016219")),
+ register_at=factor(c("Thu Mar 02 21:34:30 UTC 2017", "Tue Mar 14 19:40:57 UTC 2017", "Tue Apr 14 19:29:10 UTC 2017")))
>
> library(stringr) # load package
> d$register_month <- str_split_fixed(as.character(d$register_at), " ", 3)[,2] # convert to character, split at a space, take the second element
> d
dsn register_at register_month
1 AC000W000014612 Thu Mar 02 21:34:30 UTC 2017 Mar
2 AC000W000016124 Tue Mar 14 19:40:57 UTC 2017 Mar
3 AC000W000016219 Tue Apr 14 19:29:10 UTC 2017 Apr
请注意,register_month
将是character
向量,因此如果您想将其作为一个因素,您还必须使用as.factor
将其恢复为一个因素。< / p>
答案 2 :(得分:0)
您应该执行以下步骤:
示例代码:
#Create the data frame
mdata <- data.frame(dsn=character(0), register_at=character(0))
mdata <- edit(mdata)
#Set the locale to en_US (This is required, because month/date names are in english)
Sys.setlocale(category = "LC_TIME", locale="English_US.1252")
Sys.getlocale()
#Convert the variable to date
mdata$register_at_date <- as.Date(mdata$register_at,format="%a %b %d %H:%M:%S UTC %Y")
#Extract the month part
mdata$month <- months(mdata$register_at_date)
#Print out the data frame
print(mdata)