添加带有 0 和 1 的新列,具体取决于带有 mutate 的 x 列中的数值
Add new column with 0 and 1 depending on a numeric value in column x with mutate
我想添加一列来预测 glm 高成本。
我使用代码:
df %>%
mutate(high_costs = case_when(Totalcosts>=4000~"1",
Totalcosts<4000~"0"
))
这显然给了我正确的价值观,但是
现在我有两个问题:
如何将此列实际添加到我的 df 中?
是否有可能(通过使用其他代码)使输出成为数字而不是因子,因为我将在我的 glm 中预测 0 或 1。还是我必须使用像
这样的代码
df$y <- as.numeric(as.factor(df$high_costs))
哦,是的。
- 您只需要将它重新分配给一个新变量(或者如果您希望使用完整的 rambo - 再次重新分配给 df,但我强烈建议不要这样做)。
df_1 = df %>%
mutate(high_costs = case_when(Totalcosts>=4000~"1",
Totalcosts<4000~"0"
))
您也可以使用 ifelse()
语法,但我也很喜欢 SQL 与大小写交叉使用。
- 是的。首先,最简单的方法。删除引号。
df_1 = df %>%
mutate(high_costs = case_when(Totalcosts>=4000~1,
Totalcosts<4000~0
))
R 会将这些识别为数值。
然而,第二种方法是使用菊花链连接。这是必要的,因为 R 在将字符或数字转换为因子时实际上在做什么(https://www.guru99.com/r-factor-categorical-continuous.html#:~:text=Factor%20in%20R%20is%20a,integer%20data%20values%20as%20levels。-请注意突出显示部分中的第二句)
因此,您可以分多个步骤进行:
df %>%
mutate(high_costs = case_when(Totalcosts>=4000~"1",
Totalcosts<4000~"0"
),
high_costs = as.character(high_costs),
high_costs = as.numeric(high_costs))
或者,将其全部包装一次,这样看起来更难,但需要的代码更少。
df_1 = df %>%
mutate(high_costs = as.numeric(as.character(case_when(Totalcosts>=4000~1,
Totalcosts<4000~0
))))
'df$y <- as.numeric(as.factor(df$high_costs))' 不会按照你希望的方式工作,除非你提供一个更好的理由来说明为什么你想要一个数字因子值,R 已经做了一些事情,因为它是一个因子.我强烈建议您调查 R 中字符和因素之间的差异,以进一步了解原因。
我想添加一列来预测 glm 高成本。 我使用代码:
df %>%
mutate(high_costs = case_when(Totalcosts>=4000~"1",
Totalcosts<4000~"0"
))
这显然给了我正确的价值观,但是 现在我有两个问题:
如何将此列实际添加到我的 df 中?
是否有可能(通过使用其他代码)使输出成为数字而不是因子,因为我将在我的 glm 中预测 0 或 1。还是我必须使用像
这样的代码df$y <- as.numeric(as.factor(df$high_costs))
哦,是的。
- 您只需要将它重新分配给一个新变量(或者如果您希望使用完整的 rambo - 再次重新分配给 df,但我强烈建议不要这样做)。
df_1 = df %>%
mutate(high_costs = case_when(Totalcosts>=4000~"1",
Totalcosts<4000~"0"
))
您也可以使用 ifelse()
语法,但我也很喜欢 SQL 与大小写交叉使用。
- 是的。首先,最简单的方法。删除引号。
df_1 = df %>%
mutate(high_costs = case_when(Totalcosts>=4000~1,
Totalcosts<4000~0
))
R 会将这些识别为数值。
然而,第二种方法是使用菊花链连接。这是必要的,因为 R 在将字符或数字转换为因子时实际上在做什么(https://www.guru99.com/r-factor-categorical-continuous.html#:~:text=Factor%20in%20R%20is%20a,integer%20data%20values%20as%20levels。-请注意突出显示部分中的第二句)
因此,您可以分多个步骤进行:
df %>%
mutate(high_costs = case_when(Totalcosts>=4000~"1",
Totalcosts<4000~"0"
),
high_costs = as.character(high_costs),
high_costs = as.numeric(high_costs))
或者,将其全部包装一次,这样看起来更难,但需要的代码更少。
df_1 = df %>%
mutate(high_costs = as.numeric(as.character(case_when(Totalcosts>=4000~1,
Totalcosts<4000~0
))))
'df$y <- as.numeric(as.factor(df$high_costs))' 不会按照你希望的方式工作,除非你提供一个更好的理由来说明为什么你想要一个数字因子值,R 已经做了一些事情,因为它是一个因子.我强烈建议您调查 R 中字符和因素之间的差异,以进一步了解原因。