【问题标题】:mapply for SparkR R映射 SparkR R
【发布时间】:2016-11-17 18:31:47
【问题描述】:

我有一个带有如下标头的 Spark 数据帧“a”

 C1 | C2 | C3 | C4  
 I1 | 12 | 31 | 4  
 I2 | 14 | 32 | 13  
 I3 | 13 | 33 | 15  
 I4 | 16 | 29 | 25  
 I5 | 18 | 30 | 73  
 I6 | 17 | 36 | 19  

第 2 列 (C2) 始终小于 C3

我想将 C4 与 C3 和 C2 进行比较,逻辑如下: 如果 C4 在 C2 和 C3 之间,则返回 1 否则返回 2

并将其作为新列添加到数据框

当不涉及 Spark 时,我可以使用 mapply 执行此操作。 但是如何在 SparkR 中做到这一点?

【问题讨论】:

    标签: r dataframe sparkr mapply


    【解决方案1】:

    你应该可以只用一个 ifelse 语句来做到这一点

    df_a <- data.frame(C1 = c('I1', 'I2', 'I3', 'I4', 'I5', 'I6'),
                    C2 = c(12, 14, 13, 16, 18, 17),
                    C3 = c(31, 32, 33, 29, 30, 36),
                    C4 = c(4, 13, 15, 25, 73, 19))
    
    a <- as.DataFrame(df_a)
    a$C5 <- ifelse(a$C4 > a$C2 & a$C4 < a$C3, 1, 2)
    head(a)
      C1 C2 C3 C4 C5
    1 I1 12 31  4  2
    2 I2 14 32 13  2
    3 I3 13 33 15  1
    4 I4 16 29 25  1
    5 I5 18 30 73  2
    6 I6 17 36 19  1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-17
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多