r - 在因子中使用时间来创建自定义列
问题描述
我有一个标题为 的数据集nypd
,其中有一列标题为OCCUR_TIME
。此栏目包含不同的时间(ex: 3:57:00, 10:31:00, 22:15:00, etc.)
。
我想TIME_OF_DAY
使用 R 创建一个自定义列;我在下面写了这段代码:
nypd$TIME_OF_DAY <- 'Night'
nypd[nypd$OCCUR_TIME >= 6:00:00 & nypd$OCCUR_TIME < 12:00:00,] <- 'Morning'
nypd[nypd$OCCUR_TIME >= 12:00:00 & nypd$OCCUR_TIME < 16:00:00,] <- 'Afternoon'
nypd[nypd$OCCUR_TIME >= 16:00:00 & nypd$OCCUR_TIME < 20:00:00,] <- 'Evening'
我得到的错误是Error in `[<-.data.frame`(`*tmp*`, nypd$OCCUR_TIME >= "6:00:00" & nypd$OCCUR_TIME < : missing values are not allowed in subscripted assignments of data frames
.
我是 R 新手,所以我不太熟悉错误代码,但我认为错误是由于我在OCCUR_TIME
列中的值没有被读取为“时间”类型的值,所以我不能使用任何运营商。
有人可以帮我弄清楚我哪里出错了吗?谢谢!
解决方案
首先,正如错误所说,您的数据中缺少值。由于我们没有您的数据可以使用,让我们弥补一些数据来使用:
> data(iris)
> iris$Petal.Length[3:5] <- NA
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 NA 0.2 setosa
4 4.6 3.1 NA 0.2 setosa
5 5.0 3.6 NA 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
现在,它在子集上存在问题,Petal.Length
因为它不确定在缺少值时该怎么办。
> iris[iris$Petal.Length > 1.2 & iris$Petal.Length < 1.5, ] <- 50
Error in `[<-.data.frame`(`*tmp*`, iris$Petal.Length > 1.2 & iris$Petal.Length < :
missing values are not allowed in subscripted assignments of data frames
另请注意,当您执行此操作时:
nypd[nypd$OCCUR_TIME >= 6:00:00 & nypd$OCCUR_TIME < 12:00:00,] <- 'Morning'
你没有告诉它你想分配什么变量'Morning'
!
您可以为您的布尔值添加一个测试is.na
,并包括您想要影响的变量名称:
> iris[!is.na(iris$Petal.Length) & iris$Petal.Length > 1.2 & iris$Petal.Length < 1.5, 'Petal.Length'] <- 50
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 50.0 0.2 setosa
2 4.9 3.0 50.0 0.2 setosa
3 4.7 3.2 NA 0.2 setosa
4 4.6 3.1 NA 0.2 setosa
5 5.0 3.6 NA 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
关于学习如何在 R 中处理日期和时间的建议是正确的,你在这里表达它们的方式是不正确的。如果它们被作为一个因素被读取,那么也许您正在读取您需要添加的数据stringsAsFactors = FALSE
?
推荐阅读
- django - Django:从 request.GET 到 QuerySet
- java - JVM 内存使用量超过操作系统报告的
- java - 如何使用Java通过for循环删除ArrayList中的元素
- python - SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 115-116: malformed \N character escape
- tar - 将 tar 存档的一部分提取到另一个 tar 存档文件
- javascript - 无法在字符串“文档”上创建属性“验证器”
- php - Laravel MorphTo() 导致无限加载时间和白屏
- javascript - 如何使用 Javascript 在 DOM 中访问和使用具有 ID 的动态创建的 html 元素
- c# - Polly 策略在调用 Execute() 时抛出异常
- javascript - 用 rsa 反应 js crypt 文本以在 qr 码上使用它