sparkR:如何从字符向量创建虚拟列?

sparkR: how to create a dummy column from character vector?

考虑以下简单示例:

df <- data.frame(id=c(1:4), climate=c("cold_rainy","coldSunny","rainywarm","sunny_warm"))
head(df)

       id    climate
       1     cold_rainy
       2     coldSunny
       3     rainywarm
       4     sunny_warm

我可以简单地为所有包含单词 'sunny' 的行创建一个虚拟变量,如下所示:

df$sunny=grepl('sunny',df$climate, ignore.case = TRUE)*1
head(df)

  id    climate        sunny
  1     cold_rainy     0
  2     coldSunny      1
  3     rainywarm      0
  4     sunny_warm     1

如何在 sparkR 中的 SparkDataFrame 上实现这个操作?

您可以先将字符串值转换为小写,然后使用 rlike()$climate 中查找 "sunny"。我们因此 cast() 键入 integer.

的布尔输出
ddf <- createDataFrame(sqlContext, df)  # Data
ddf$climate <- lower(ddf$climate) # Convert to lowercase
ddf$sunny <- cast(rlike(ddf$climate, "sunny"), "integer") # Create integer column

> ddf
  id    climate sunny
1  1 cold_rainy     0
2  2  coldsunny     1
3  3  rainywarm     0
4  4 sunny_warm     1