在R中的字符串上使用If/Else If时出错

在R中的字符串上使用If/Else If时出错,r,dataframe,if-statement,R,Dataframe,If Statement,我正在尝试将数月的字符串转换为数字表示。正如您从代码中看到的,我试图将数字转换为字符,这样我就不会将数字放在字符串原来所在的位置。但我仍然得到下面的错误。我正在使用na.omit,因此数据集中应该没有na Warning message: In `[<-.factor`(`*tmp*`, i, value = c(8L, 11L, 11L, 8L, 8L, 2L, : invalid factor level, NA generated 警告消息: 在`[中,一个更简单的选择是 for

我正在尝试将数月的字符串转换为数字表示。正如您从代码中看到的,我试图将数字转换为字符,这样我就不会将数字放在字符串原来所在的位置。但我仍然得到下面的错误。我正在使用na.omit,因此数据集中应该没有na

Warning message:
In `[<-.factor`(`*tmp*`, i, value = c(8L, 11L, 11L, 8L, 8L, 2L,  :
invalid factor level, NA generated
警告消息:

在`[中,一个更简单的选择是

forestfires$month <- as.character(match(forestfires$month, tolower(month.abb)))

forestfires$month我认为您不需要
data.frame(cbind
,因为
read.csv
已经是一个data.frame。您可以在read.csv中添加
stringsAsFactors=FALSE
以字符串形式读取,而不是
factor
。此外,要转换为索引,您可以使用
mach(forestfires$month,month.abb)
作为一个常规提示,您应该真正使用日期库,而不是像这样复制粘贴代码。@Thomas_u不清楚如何读取
read.csv('forestfires.csv',stringsAsFactors=FALSE)
我不会使用循环进行转换。
匹配(forestfires$month,month.abb)
如果值是
Jan
Feb
Mar
就足够了,因为
月份。abb
Jan
Feb
,等等。您拥有的值是
Jan
Feb
,请将月份转换为小写。abb与下面的解决方案一样,它应该可以工作。只需o东北线。太棒了。非常感谢!
forestfires$month <- as.character(match(forestfires$month, tolower(month.abb)))