SparkR-dropna没有提供所需的输出

时间:2016-01-25 05:19:01

标签: na sparkr

我在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仍然存在于输出中。 我在这里错过了什么吗?

2 个答案:

答案 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)