【问题标题】:Watson Studio change multiple column types at the same type in RefineWatson Studio 在 Refine 中更改同一类型的多个列类型
【发布时间】:2019-02-22 06:43:37
【问题描述】:

我正在将一个包含 152 列的文件加载到 watson studio,但我遇到的问题是默认情况下它采用 string 类型。 有什么办法可以同时改变几列? 我知道我可以逐列进行,但 150 列太多了。

我试过"mutate_all(~ ifelse(is.na(as.double(.x)),.x,as.double(.x)))"

它在预览中有效,但在我启动流程时失败并出现以下错误:

19 Feb 2019-20:15:25+0100: Job execution started
 19 Feb 2019-20:15:32+0100: Error in ifelse(is.na(as.double(.x)), .x, as.double(.x)): object 'COLUMN1' not found
 19 Feb 2019-20:15:32+0100: Job execution ended

【问题讨论】:

    标签: watson-studio


    【解决方案1】:

    如果你需要对所有的字符串列做,请使用mutate_if而不是mutate_all()

    mutate_if(is.character,as.double)
    

    它应该将所有字符串类型更改为双精度。

    因此,如果您不想转换任何特定列,则必须执行类似的操作,-matches() 将列出除指定列之外的所有列,并仅对这些列应用双重转换。

    mutate_at(vars(-matches("columnname")),funs(as.double(.)))
    

    【讨论】:

    • 这行得通,但第一列是目标列,它实际上是一个字符串,所以当我应用这个解决方案时它会转到 NA。有什么建议吗,谢谢?
    • 用 mutate_at(vars(-matches("columnname")),funs(as.double(.))) 更新了答案
    • 非常感谢您的回答。
    猜你喜欢
    • 2019-08-22
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多