![](/img/trans.png)
[英]Getting NA/NaN error message despite having no missing values (using R: tidyLPA)
[英]Define coordinates using sp: error message about missing values, but no NA data. Why?
我有坐标数据,没有缺失值。 我想将它们定义为使用 sp 的坐标,但用于数据的子集。 当我使用
subset_of_data <- data[data$variable == x, ]
coordinates_from_data = subset(subset_of_data, select=c("S_X", "S_Y"))
coordinates(coordinates_from_data) <- c("S_X", "S_Y")
我得到:
Error in `coordinates<-`(`*tmp*`, value = c("S_X", "S_Y")) :
coordinates are not allowed to contain missing values
但是当我使用子集时,没有问题:
subset_of_data <- subset(data, data$variable == x)
coordinates_from_data = subset(subset_of_data, select=c("S_X", "S_Y"))
coordinates(coordinates_from_data) <- c("S_X", "S_Y")
我没有得到错误。
知道为什么会这样吗?
它与sp
无关; 这就是 R 中子集的工作方式。 举个例子:
df <- data.frame(city = c("Paris", "Berlin", NA),
x_coordinate = c(48.8589507, 52.5069312, 50.8550625),
y_coordinate = c(2.27702, 13.1445501, 4.3053501))
df
city x_coordinate y_coordinate
1 Paris 48.85895 2.27702
2 Berlin 52.50693 13.14455
3 <NA> 50.85506 4.30535
如果我们将这个 dataframe 转换为坐标,它可以工作,因为没有 NA:
coordinates(df) <- c("x_coordinate", "y_coordinate")
现在让我们想象一下,我们只想在坐标中变换 df 的一个子集,例如,只有 Paris。 如果我们这样做:
sub_df = df[df$city == "Paris", ]
我们得到:
city x_coordinate y_coordinate
1 Paris 48.85895 2.27702
NA <NA> NA NA
在这种情况下,转换为坐标不再起作用,因为子集变量包含 NA 值,而子集在坐标变量中创建 NA 值。
coordinates(sub_df) <- c("x_coordinate", "y_coordinate")
Error in `coordinates<-`(`*tmp*`, value = c("X_coordinate", "Y_coordinate" :
coordinates are not allowed to contain missing values
subset
的工作方式不同:
sub_df_2 = subset(df, df$city == "Paris")
sub_df_2
coordinates city
1 (48.85895, 2.27702) Paris
另一种选择是在使用[
时更具体:
sub_df_3 = df[df$city == "Paris" & !is.na(df$city), ]
sub_df_3
coordinates city
1 (48.85895, 2.27702) Paris
它与 Pandas 的[
运算符完全不同:
import pandas as pd
import numpy as np
df = pd.DataFrame({'city': ['Paris', 'Berlin', np.NaN],
'x_coordinate': [48.8589507, 52.5069312, 50.8550625],
'y_coordinate': [2.27702, 13.1445501, 4.3053501]})
print(df[df["city"] == 'Paris'])
city x_coordinate y_coordinate
0 Paris 48.858951 2.27702
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.