У меня есть шейп-файл с колонкой для численности видов и один для богатства видов. Вы можете найти его здесь: Dropbox
и загрузить его с st_read()
.
Я создал его с этим кодом:
library(tidyverse)
library(sf)
spatial_data <- st_join(hex3, iso_shallow_sf, join = st_contains) %>%
group_by(ID) %>%
summarise(abundance = length(scientific[!is.na(scientific)]),
richness = n_distinct(scientific[!is.na(scientific)]))
hex3 это шейп-файл, который содержит шестиугольную сетку, тип геометрии - многоугольник. iso_shallow_sf - это другой шейп-файл, который содержит названия видов со связанной геометрией точки.
В столбцах «обилие» и «богатство» файла пространственных_данных много нулей. Я хочу заменить эти нули на NA.
Я преобразовал его в фрейм данных spatial_data <- spatial_data %>% as.data.frame()
и попытался spatial_data[spatial_data == 0] <- NA
, который вернул: Ошибка в [<-.data.frame
(*tmp*
, Пространственные_данные == 0, значение = NA): неподдерживаемый матричный индекс при замене
Я также попытался na_if(spatial_data, 0)
, что вернуло: Ошибка в [<-.data.frame
(*tmp*
, x == y, значение = NA): Неподдерживаемый матричный индекс в замене
Если я делаю na_if(spatial_data[,c(2,3)], 0)
, я получаю фрейм данных с замененными нулями, который содержит только два отредактированных столбца.
Как я могу заменить нули на NA и сохранить все данные из пространственных_данных в одном и том же формате? После этого я хочу преобразовать его обратно в объект SF.
Спасибо за помощь!