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
考虑以下简单示例:
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