gpt4 book ai didi

r - 错误信息 : do not know how to convert 'dataFrame$col' to class “Date”

转载 作者:行者123 更新时间:2023-12-05 08:55:05 25 4
gpt4 key购买 nike

我有一个包含 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"

实际的数据框比这大得多。我想要做的是创建一个新列来表示与每个日期匹配的星期几,并将其添加到数据框中。如果日期是“10/1/2017”,我希望表示星期几的新列在该行中显示“星期日”。

这就是我希望数据框的样子:

> 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' 转换为类“Date”

谁能帮我理解为什么会这样?

最佳答案

as.Date 是一个使用 S3 方法分派(dispatch)的函数。也就是说,其实有几个功能:

methods("as.Date")
# [1] as.Date.character as.Date.date as.Date.dates as.Date.default
# [5] as.Date.factor as.Date.numeric as.Date.POSIXct as.Date.POSIXlt
# see '?methods' for accessing help and source code

当您调用 as.Date(x) 时,R 查看第一个对象的类并使用适当的 S3 方法。如果没有找到并且 .default 函数存在,那么它将被用作“最后的手段”。

如果查看每个方法的源代码,您只会在 as.Date.default 中找到字符串 "do not know how to convert":

as.Date.default
# function (x, ...)
# {
# if (inherits(x, "Date"))
# return(x)
# if (is.logical(x) && all(is.na(x)))
# return(structure(as.numeric(x), class = "Date"))
# stop(gettextf("do not know how to convert '%s' to class %s",
# deparse(substitute(x)), dQuote("Date")), domain = NA)
# }

如果它是已知类之一 (character, date, dates, factor, numericPOSIXctPOSIXlt,现在也不是 Datelogical-NA),那么它将运行特定的函数(没有一个包含该错误字符串)。这表明您的 $v6 列是一个不同的类。没有 MWE,这完全是猜测。

我建议您找到数据的实际类别

class(dataFrame$v6)

并弄清楚如何将其转换为已知版本之一。

编辑

此外,请注意 R 区分大小写。您的 MWE 使用小写 v6 但您的列名是大写的。怎么样

october2017$V7 <- weekdays(as.Date(oct$V6, format="%m/%d/%Y"))

查看october2017$v6(小写),返回NULL,触发.default方法>as.Date.

关于r - 错误信息 : do not know how to convert 'dataFrame$col' to class “Date” ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com