Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将SparkR数据帧中的整数列转换为字符串?_R_Apache Spark_Sparkr - Fatal编程技术网

如何将SparkR数据帧中的整数列转换为字符串?

如何将SparkR数据帧中的整数列转换为字符串?,r,apache-spark,sparkr,R,Apache Spark,Sparkr,我有一个SparkR数据帧,其中所有列都是整数。我想用字符串替换一列 所以,如果列包含0,1,1,0,我想让它成为“否”,“是”,“是”,“否” 我试过了 df$C0 <- ifelse(df$C0 == 0, "no", "yes) 我将如何进行此更新 p.S.I基于以下事实进行上述尝试: df$C0 <- df$C0 + 1 df$C0这里最简单的解决方案可能是使用SQL: # Because it is hard to live without pipes library(

我有一个SparkR数据帧,其中所有列都是整数。我想用字符串替换一列

所以,如果列包含0,1,1,0,我想让它成为“否”,“是”,“是”,“否”

我试过了

df$C0 <- ifelse(df$C0 == 0, "no", "yes)
我将如何进行此更新

p.S.I基于以下事实进行上述尝试:

df$C0 <- df$C0 + 1

df$C0这里最简单的解决方案可能是使用SQL:

# Because it is hard to live without pipes
library(magrittr)

# Create sqlContext
sqlContext <- sparkRSQL.init(sc)
sqlContext <- SQLContext(sc)

# Register table
registerTempTable(df, 'df')

# Query
sql(sqlContext, "SELECT *, IF(C0 = 0, 'yes', 'no') AS C0 FROM df") %>% showDF()

事实上,问题的根源是ifelse而不是column type。如果有其他解决方法,我很乐意使用它。我能想到的最好方法是使用一个简单的SQL查询。很可能有一些更干净的方法,但有些功能在我的安装上根本不起作用(如
mutate
),而且据我所知,无法定义文字。
# Because it is hard to live without pipes
library(magrittr)

# Create sqlContext
sqlContext <- sparkRSQL.init(sc)
sqlContext <- SQLContext(sc)

# Register table
registerTempTable(df, 'df')

# Query
sql(sqlContext, "SELECT *, IF(C0 = 0, 'yes', 'no') AS C0 FROM df") %>% showDF()
df <- df %>% withColumnRenamed(existingCol = 'C0', newCol = 'CO_old')
registerTempTable(df, 'df')
sql(sqlContext, "SELECT *, IF(C0_old = 0, 'yes', 'no') AS C0 FROM df")
df %>% select(when(df$C) == 0, 'yes') %>% otherwise('no'))