R 如何获得分类变量的部分级别?
我的数据集如下所示:R 如何获得分类变量的部分级别?,r,R,我的数据集如下所示: 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等。如何仅从寄存器at变量中获取月份规范 您可以使用s
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等。如何仅从寄存器at变量中获取月份规范 您可以使用substr函数,因为月份名称始终位于同一位置
substr(df$register_at, 5, 7)
作为将来的参考,我将尝试以更标准的格式编写日期,例如年-月-日-小时:分钟:秒 然而,我知道我们可能并不总是能够控制数据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\u month将是一个字符向量,因此如果希望将其作为因子,则还必须使用as.factor将其恢复为因子。您应该执行以下步骤: 将您的语言环境设置为英语如果您的计算机的语言环境已经是英语,您可以跳过此步骤! 使用as.Date函数格式化数据。请检查下面的格式字符串 一旦数据是日期格式,只需从日期中提取月份部分。 示例代码:
#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)
sapplystrsplitdf$register_at,\\s,[,2是register_at真的是分类的还是日期?还是字符串?如果键入sapplylast.reg_数据,类?factors sapplylast.reg_数据,类dsn registed_at factors applystrsplitas.characterdf$register_at,\\s,[,2如果没有这些数据,我无法确定,但你在不同角色之间所做的一个改变似乎让NA?R的每件事有时都会因为各种因素而变得复杂。它正在工作。我的机器可能会有一些问题。我重新启动了我的PC和R,它工作得很好。谢谢you@P.Nitu,请将问题标记为已回答,如果他回答了我骗了你,或者至少骗了你。