【发布时间】:2020-04-21 16:04:00
【问题描述】:
作为树模型的输入,我在 SQL 中创建了一个分析表。现在我想将它转移到 R,因为以该表作为输入的模型也在 R 中运行。 我无法转换为 R 的 SQL 步骤之一。
分析表的形式如下:
df <- data.frame(
pseudonym = c("a", "a", "a", "b", "c", "c"),
var1 = c(1,1,0,1,1,0),
var2 = c(1,0,0,0,0,1),
var3 = c(0,0,0,0,0,1))
> df
pseudonym var1 var2 var3
1 a 1 1 0
2 a 1 0 0
3 a 0 0 0
4 b 1 0 0
5 c 1 0 0
6 c 0 1 1
在下一步中,我需要 pseudonym 的不同行,同时保留其他列 var1、var2、var3 中的信息 (1)。 (在 SQL 中,这是通过
max(case when...then 1 else 0 end) as var1)
因此,从 df1 创建的结果 df2 应该是
df2 <- data.frame(
pseudonym = c("a", "b", "c"),
var1 = c(1,1,1),
var2 = c(1,0,1),
var3 = c(0,0,1))
> df2
pseudonym var1 var2 var3
1 a 1 1 0
2 b 1 0 0
3 c 1 1 1
如果有人有想法会非常有帮助。
【问题讨论】:
-
你可以用
dplyr::case_when重现你的SQL -
我在
mutate语句中使用了case_when,结果是df1。问题是我怎样才能得到 df2 ?