添加包含星期几的变量

时间:2018-06-01 10:46:34

标签: r date variables

这似乎是重复,但我还没有找到这个问题的答案。 我有 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,但这样我不知道是否有解决问题的方法或解决方法。

任何提示?

2 个答案:

答案 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))