这似乎是重复,但我还没有找到这个问题的答案。 我有 dataframe :
Day.of.the.month Month Year Items Amount.in.euros
1 1 January 2005 Nothing 0.00
2 2 February 2008 Food 7.78
3 3 April 2009 Nothing 0.00
4 4 January 2016 Bus 2.00
我想创建一个名为“day.of.the.week”的列,当然包括“星期六”,“星期日”等等。如果日期格式为'2012/02/02'我不会有probs,但这样我不知道是否有解决问题的方法或解决方法。
任何提示?
答案 0 :(得分:4)
你想要这个吗?
options(stringsAsFactors = F)
df <- data.frame( x = c(1, 2, 3, 4) ,y = c("January", "February","April", "January"), z = c(2005, 2008, 2009, 2016))
weekdays(as.Date(paste0(df$x, df$y, df$z),"%d%B%Y")) # %d for date, %B for month in complete and %Y for year complete
这只是旁注
注意:由于有人评论此解决方案依赖于区域设置。因此,如果是这种情况,您也可以随时“Sys.setlocale("LC_TIME", "C")
”更改区域设置,请使用Sys.getlocale()
获取区域设置。
如果有人有兴趣在每次开始R会话时使其永久化:
您还可以在.RProfile
文件(通常位于您的主目录,在Windows中,它主要位于Documents文件夹中)下面写下以下脚本:
.First <- function() {
Sys.setlocale("LC_TIME", "C")
}
答案 1 :(得分:1)
Day.of.the.month<-as.numeric(c(1,2,3,4))
Month<-as.character(c("January","February","April","January"))
Year<-as.numeric(c(2005,2008,2009,2016))
Items<-as.character(c("Nothing","Food","Nothing","Bus"))
Amount.in.euros<-as.numeric(c(0.00,7.78,0.0,2.0))
complete.date<-paste(Year,Month,Day.of.the.month)
strptime(complete.date, "%Y %B %d")
example1.data <-
data.frame(Day.of.the.month,Month,Year,Items,Amount.in.euros,complete.date)
example1.data$weekday <- weekdays(as.Date(example1.data$complete.date))