下面是我的数据集示例,其中有GPS位置(Latitude
和Longitude
)以及它们的注册日期和时间:
> head(datanet)
Date & Time [Local] Latitude Longitude
1: 18/06/2018 03:01 -2.434901 34.85359
2: 18/06/2018 03:06 -2.434598 34.85387
3: 18/06/2018 03:08 -2.434726 34.85382
4: 18/06/2018 03:12 -2.434816 34.85371
5: 18/06/2018 03:16 -2.434613 34.85372
6: 18/06/2018 03:20 -2.434511 34.85376
我想创建一列split
,该列将查看每一行并显示Night
(如果第一列中的时间在[18h00:06h00]和{{1}之间) },如果第一列中的时间是[06h00:18h00]。尽管我是一个初学者,但在这里我如何处理这个问题:
Day
我在正确的轨道上,如何解决此错误?
任何输入都值得赞赏
答案 0 :(得分:3)
“ DateTime”列位于datanet
数据集中,因此我们需要$
datanet$split<- if_else((hour(datane$DateTime) >= 6) &
(hour(datanet$DateTime) < 18), "Day", "Night")
或使用with
datanet$split <- with(datenet, if_else((hour(DateTime) >= 6) &
(hour(DateTime) < 18), "Day", "Night"))
此外,考虑到原始数据为data.table
,语法应为
library(data.table)
datanet[, split := if_else((hour(DateTime) >= 6) &
(hour(DateTime) < 18), "Day", "Night")]
或者不使用任何if_else
datanet[, split := c("Night", "Day")[1 + ((hour(DateTime) >= 6) &
(hour(DateTime) < 18))]]
答案 1 :(得分:1)
鉴于您的Local
列是文本,您应该能够与时间文字进行比较:
datanet$split <- ifelse(datanet$Local >= '18:00' | datanet$Local <= '06:00',
'Night', 'Day')