【发布时间】:2017-11-10 19:49:59
【问题描述】:
我有一个数据框,其中包含 2017 年 10 月的记录。第 6 列将日期作为字符向量。
这就是它的样子:
> october2017[1:6,1:6]
V1 V2 V3 V4 V5 V6
1 89108060 IN0000005 P2 RK1 CA1-R 10/1/2017
2 10503818 IN0000014 P2 RK1 CA31 10/2/2017
3 89108152 765000054 P2 RK1 CA31 10/3/2017
4 89108152 765000197 P2 RK1 CA31 10/4/2017
5 89108206 200000162 P2 RK1 CA31 10/5/2017
6 89108206 100001098 P2 RK1 CA31 10/6/2017
> class(october2017$V6)
[1] "character"
实际的数据框比这个大很多。我想要做的是创建一个新列来表示与每个日期匹配的星期几并将其添加到数据框中。如果日期是“2017 年 10 月 1 日”,我希望表示星期几的新列在该行中显示“星期日”。
这就是我希望数据框的样子:
> october2017[1:6,1:7]
V1 V2 V3 V4 V5 V6 V7
1 89108060 IN0000005 P2 RK1 CA1-R 10/1/2017 Sunday
2 10503818 IN0000014 P2 RK1 CA31 10/2/2017 Monday
3 89108152 765000054 P2 RK1 CA31 10/3/2017 Tuesday
4 89108152 765000197 P2 RK1 CA31 10/4/2017 Wednesday
5 89108206 200000162 P2 RK1 CA31 10/5/2017 Thursday
6 89108206 100001098 P2 RK1 CA31 10/6/2017 Friday
这是我尝试过的: newcol = weekdays(as.Date(october2017$v6, format="%m/%d/%Y")) october2017 = cbind(october2017,newcol, stringsAsFactors=FALSE)
这是我尝试运行此代码的第一行时收到的错误消息: as.Date.default(october2017$v6, format = "%m/%d/%Y") 中的错误: 不知道如何将“october2017$v6”转换为“日期”类
谁能帮我理解为什么会这样?
【问题讨论】:
-
在您的问题中包含minimal reproducible example 会增加您获得答案的机会。
-
@Cedric,实际上这仍然适用于因素,尝试
as.Date(factor("5/11/2017"), format='%m/%d/%Y'),所以它表明$v6是别的东西。我支持 MWE 的投票。 -
@r2evans 感谢您的检查,我已经删除了关于因子类的评论。詹妮弗检查 r2evans 的答案。
-
@Cedric,我经常做同样的假设并跳到那个,我的习惯是很少使用因子(坦率地说,主要是
ggplotfaceting)。时不时地,当我不小心拥有它们并且事情仍然按设计工作时,我会感到惊讶。算了。 -
是的,谢谢您的评论,
stacomirtools::killfactor()有点开玩笑,但解决了我的很多问题....