我在R中可用的空气质量数据集中应用了以下代码,其中包含一些缺失值。我想省略具有NAs的行
库(SparkR) Sys.setenv('SPARKR_SUBMIT_ARGS'='“ - packages”“com.databricks:spark-csv_2.10:1.2.0”“sparkr-shell”')
sc< - sparkR.init(“local”,sparkHome =“/ Users/devesh/Downloads/spark-1.5.1-bin-hadoop2.6”)
sqlContext< - sparkRSQL.init(sc)
路径< - “/用户/ devesh /工作/ airquality /”
aq< - read.df(sqlContext,path,source =“com.databricks.spark.csv”,header =“true”,inferSchema =“true”)
头(dropna(水溶液,如何= “任何”))
Ozone Solar_R风温月日 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 NA NA 14.3 56 5 5 6 28 NA 14.9 66 5 6
NAs仍然存在于输出中。 我在这里错过了什么吗?
答案 0 :(得分:0)
我使用了一个不同的示例供您删除NA
:
>data_local <- data.frame(Id=1:4, Age=c(40, 52, 25, NA))
>data <- createDataFrame(sqlContext, data_local)
>head(data)
Id Age
1 1 40
2 2 52
3 3 25
4 4 NA
>head(dropna(data,how="any"))
Id Age
1 1 40
2 2 52
3 3 25
答案 1 :(得分:0)
本机R中缺少的值用逻辑常量<NA>
表示。 SparkR DataFrames表示NULL的缺失值。如果使用createDataFrame()将本地R data.frame转换为分布式SparkR DataFrame,SparkR将自动将<NA>
转换为NULL。但是,如果要通过使用read.df()从文件中读取数据来创建SparkR DataFrame,则可能包含&#34; NA&#34;的字符串,但不包含R逻辑常量<NA>
缺失值表示形式的字符串。字符串&#34; NA&#34;不会自动转换为NULL,因此dropna()不会将其视为缺失值。
如果你有&#34; NA&#34; csv中的字符串可能会过滤掉它们而不是使用dropna():
filtered_aq&lt; - filter(aq,aq $ Ozone!=&#34; NA&#34;&amp; aq $ Solar_R!=&#34; NA&#34;)
头(filtered_aq)