Во-первых, как говорится в ошибке, в ваших данных отсутствуют значения. Поскольку у нас нет ваших данных для работы, давайте составим некоторые данные для использования:
> 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
?