我在将工作日的.csv列数据转换为数字时遇到麻烦(因此1 =星期一,2 =星期二,3 =星期三,等等)。我正在尝试使用strptime功能,如下所示:http://www.inside-r.org/r-doc/base/strftime

由于我想将工作日转换为数字,因此我使用了“%u”格式选项。这是我的代码如下:

> newweekdaynum <- strptime(SFCrimeData$DayOfWeek, "%u")

其中SFCrimeData是我拥有的数据集,其中包含大量犯罪信息。运行该语句后没有出现错误,但是当我要打印“newweekdaynum”时,所有这些都是一个巨大的值表,都说“NA”。

我究竟做错了什么?

最佳答案

如果您可以将某些内容解析为完整的日期/日期时间,则可以使用strptime。它将返回一个datetime对象。那不是你想要的。

相反,您可以使用有序因素:

#some example data
set.seed(42)
x <- factor(sample(c("Monday", "Tuesday", "Wednesday",
                     "Thursday", "Friday", "Saturday", "Sunday"),
            20, TRUE))
# [1] Sunday    Sunday    Wednesday Saturday  Friday    Thursday  Saturday  Monday    Friday    Friday    Thursday  Saturday  Sunday
#[14] Tuesday   Thursday  Sunday    Sunday    Monday    Thursday  Thursday
#Levels: Friday Monday Saturday Sunday Thursday Tuesday Wednesday

#turn into ordered factor
x <- factor(x, levels = c("Monday", "Tuesday", "Wednesday",
                          "Thursday", "Friday", "Saturday", "Sunday"),
            ordered = TRUE)
#[1] Sunday    Sunday    Wednesday Saturday  Friday    Thursday  Saturday  Monday    Friday    Friday    Thursday  Saturday  Sunday
#[14] Tuesday   Thursday  Sunday    Sunday    Monday    Thursday  Thursday
#Levels: Monday < Tuesday < Wednesday < Thursday < Friday < Saturday < Sunday

#extract underlying integer values
as.integer(x)
#[1] 7 7 3 6 5 4 6 1 5 5 4 6 7 2 4 7 7 1 4 4

(您实际上并不需要将其设为有序因子,以正确顺序指定级别的因子就足够了,但是从概念上讲,工作日是有序因子。)

关于r - 将星期几转换为R中的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33008615/

10-12 17:34
查看更多