如果在需要 TRUE/FALSE 的地方缺少值 - 星期几作为数字
if missing value where TRUE/FALSE needed - day of week as number
我有以下代码将星期几标识为我的数据集中的数字:
sapply(weekdays(as.Date(date), abbreviate=TRUE),
function(x) if(x=="Sun") 1 else
if(x=="Mon") 2 else
if(x=="Tue") 3 else
if(x=="Wed") 4 else
if(x=="Thu") 5 else
if(x=="Fri") 6 else
if(x=="Sat") 7 else 0)
}
但我遇到的问题是,当我尝试使用此公式应用它时,我的日期中必须有空白:
d$dow <- myweekday(d$DateTime)
R 抛出此错误:
Error in if (x == "Sun") 1 else if (x == "Mon") 2 else if (x == "Tue") 3 else if (x == :
missing value where TRUE/FALSE needed
请问我该如何进行?我试图在上面添加另一个 if 命令 (if X=="NA") 0 但这没有用。
如有任何帮助,我们将不胜感激。
你的代码看起来没问题,除了末尾有一个括号(复制粘贴错误?)
你得到一个错误,因为你可能在输入中丢失了一些数据;这给出了相同的错误消息
sapply(weekdays(c(Sys.time(), NA), abbreviate=TRUE), function(x)
if(x=="Sun") 1 else
if(x=="Mon") 2 else
if(x=="Tue") 3 else
if(x=="Wed") 4 else
if(x=="Thu") 5 else
if(x=="Fri") 6 else
if(x=="Sat") 7 else 0)
如果输入有任何错误(NA 或与日期不匹配的内容),weekdays 函数会给出错误。你最好使用已经处理数字日期名称的 lubridate::wday()
函数:
library(lubridate)
wday(as.Date(date))
#### [1] 6 NA
然后您可以用任何您想要的替换 NA。
我有以下代码将星期几标识为我的数据集中的数字:
sapply(weekdays(as.Date(date), abbreviate=TRUE),
function(x) if(x=="Sun") 1 else
if(x=="Mon") 2 else
if(x=="Tue") 3 else
if(x=="Wed") 4 else
if(x=="Thu") 5 else
if(x=="Fri") 6 else
if(x=="Sat") 7 else 0)
}
但我遇到的问题是,当我尝试使用此公式应用它时,我的日期中必须有空白:
d$dow <- myweekday(d$DateTime)
R 抛出此错误:
Error in if (x == "Sun") 1 else if (x == "Mon") 2 else if (x == "Tue") 3 else if (x == : missing value where TRUE/FALSE needed
请问我该如何进行?我试图在上面添加另一个 if 命令 (if X=="NA") 0 但这没有用。
如有任何帮助,我们将不胜感激。
你的代码看起来没问题,除了末尾有一个括号(复制粘贴错误?) 你得到一个错误,因为你可能在输入中丢失了一些数据;这给出了相同的错误消息
sapply(weekdays(c(Sys.time(), NA), abbreviate=TRUE), function(x)
if(x=="Sun") 1 else
if(x=="Mon") 2 else
if(x=="Tue") 3 else
if(x=="Wed") 4 else
if(x=="Thu") 5 else
if(x=="Fri") 6 else
if(x=="Sat") 7 else 0)
如果输入有任何错误(NA 或与日期不匹配的内容),weekdays 函数会给出错误。你最好使用已经处理数字日期名称的 lubridate::wday()
函数:
library(lubridate)
wday(as.Date(date))
#### [1] 6 NA
然后您可以用任何您想要的替换 NA。