gpt4 book ai didi

r - 如何在循环中使用 mutate 和 ifelse?

转载 作者:行者123 更新时间:2023-12-03 18:39:52 26 4
gpt4 key购买 nike

我所做的是创建虚拟变量来指示连续变量是超过某个阈值 (1) 还是低于该阈值 (0)。我通过几个重复的变异来实现这一点,我想用一个循环来代替。

# load tidyverse
library(tidyverse)

# create data
data <- data.frame(x = runif(1:100, min=0, max=100))

# What I do
data <- data %>%
mutate(x20 = ifelse(x >= 20, 1, 0)) %>%
mutate(x40 = ifelse(x >= 40, 1, 0)) %>%
mutate(x60 = ifelse(x >= 60, 1, 0)) %>%
mutate(x80 = ifelse(x >= 80, 1, 0))

# What I would like to do
for (i in seq(from=0, to=100, by=20)){
data %>% mutate(paste(x,i) = ifelse(x >= i, 1,0))
}
谢谢你。

最佳答案

Ronak 的基础 R 可能是最好的,但为了完整起见,这里有另一种类似于您最初使用 dplyr 的方式:

for (i in seq(from=0, to=100, by=20)){
var <- paste0('x',i)
data <- mutate(data, !!var := ifelse(x >= i, 1,0))
}

x x0 x20 x40 x60 x80 x100
1 99.735037 1 1 1 1 1 0
2 9.075226 1 0 0 0 0 0
3 73.786282 1 1 1 1 0 0
4 89.744719 1 1 1 1 1 0
5 34.139207 1 1 0 0 0 0
6 88.138611 1 1 1 1 1 0

关于r - 如何在循环中使用 mutate 和 ifelse?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63391031/

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