【发布时间】:2018-01-16 01:38:05
【问题描述】:
我想将 spark 数据帧中的 NA/NULL 分配给它最近的邻居。我来自 R 背景,所以我使用 sparklyr 但想不出办法。
这是一个示例代码:
set.seed(1)
example <- data.frame (ID = 1:10, Cat = letters[1:5],
Numb = sample(c(NA, NA, NA, NA, 1:10), 10))
ID Cat Numb
1 1 a NA
2 2 b 1
3 3 c 3
4 4 d 6
5 5 e NA
6 6 a 5
7 7 b 4
8 8 c 9
9 9 d 10
10 10 e NA
所以我想填写 Numb 列,ID 1 NA 到 ID2 Numb 1,ID 5 到 id 4 和 6(6 或 5),以及 ID 10 到 ID 9 值 (10)。它可以很容易地在 R 中完成。无论如何可以通过 Sparklyr 在 Spark 中执行此操作吗?
这是我的 R 解决方案:
example$Numb1 <- example$Numb[c(1,1:(nrow(example)-1))]
example$Numb2 <- example$Numb[c(2:(nrow(example)), nrow(example))]
example$Merge <- ifelse(is.na(example$Numb), ifelse(is.na(example$Numb1),
example$Numb2, example$Numb1), example$Numb)
ID Cat Numb Numb1 Numb2 Merge
1 1 a NA NA 1 1
2 2 b 1 NA 3 1
3 3 c 3 1 6 3
4 4 d 6 3 NA 6
5 5 e NA 6 5 6
6 6 a 5 NA 4 5
7 7 b 4 5 9 4
8 8 c 9 4 10 9
9 9 d 10 9 NA 10
10 10 e NA 10 NA 10
当然,如果我在连续的行中有多个 NA 值,事情会变得更加复杂。也许可以提出另一个建议。
但对于 sparklyr,我不知道我能做什么。
【问题讨论】:
标签: r apache-spark sparklyr