gpt4 book ai didi

r - DataFrame 中多列的 Ifelse

转载 作者:行者123 更新时间:2023-12-05 09:30:29 25 4
gpt4 key购买 nike

我有如下数据集:

<表类="s-表"><头>身份证<日>冬天 <日> Spring <日>夏天 秋季<正文>1高不适用高低2低高不适用低3低不适用不适用低4低高不适用低

我想添加一个计算列,这样如果冬季、 Spring 、夏季和秋季列中的任何一个包含“high”,那么“1”就会添加到该行,如下所示。否则它将包含 0。

<表类="s-表"><头>身份证<日>冬天 <日> Spring <日>夏天 秋季计算列<正文>1高不适用高低12低高不适用低13低不适用不适用低04低高不适用低1

到目前为止我有这样的事情,我知道它是不正确的。我不确定如何指定多列而不是一列:

df$calculated_column <- ifelse(c(2:5)=="High",1,0)

最佳答案

我们可以使用if_any

library(dplyr)
df1 <- df1 %>%
mutate(calculated_column = +(if_any(-ID, ~ . %in% 'high')))

-输出

df1
ID Winter Spring Summer Fall calculated_column
1 1 high <NA> high low 1
2 2 low high <NA> low 1
3 3 low <NA> <NA> low 0
4 4 low high <NA> low 1

或者如果我们想使用base R,在逻辑矩阵上用rowSums创建逻辑条件

df1$calculated_column <-  +(rowSums(df1[-1] == "high", na.rm = TRUE) > 0)

数据

df1 <- structure(list(ID = 1:4, Winter = c("high", "low", "low", "low"
), Spring = c(NA, "high", NA, "high"), Summer = c("high", NA,
NA, NA), Fall = c("low", "low", "low", "low")),
class = "data.frame", row.names = c(NA,
-4L))

关于r - DataFrame 中多列的 Ifelse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69546431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com