为 SparkR R 映射
mapply for SparkR R
我有一个 Spark 数据帧 "a",header 如下所示
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 之间,则 return 1
否则 return 2
并将其作为新列添加到数据框
当不涉及 Spark 时,我可以使用 mapply 执行此操作。
但是我如何在 SparkR 中执行此操作?
你应该能够只用一个 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
我有一个 Spark 数据帧 "a",header 如下所示
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 之间,则 return 1 否则 return 2
并将其作为新列添加到数据框
当不涉及 Spark 时,我可以使用 mapply 执行此操作。 但是我如何在 SparkR 中执行此操作?
你应该能够只用一个 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