gpt4 book ai didi

R 代码 : how to generate variable based on multiple conditions from other variables

转载 作者:行者123 更新时间:2023-12-04 14:30:36 24 4
gpt4 key购买 nike

我有一个初级 R 用户:

这是我的数据集

factor1 <- c(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8,8,9, 9, 10, 10)
factor2 <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,16,17, 18, 19, 20)
factor3 <- c("a", "a", "a", "a", "a", "b", "b", "b", "b", "b", "c", "c", "c", "c", "c", "d", "d", "d", "d", "d")
factor4 <- c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150,160,170, 180, 190, NA)
dataset <- data.frame(factor1, factor2, factor3, factor4)

我这样创建了一个新变量:

dataset$newvar <-"NA"

如何执行以下操作:

如果 factor1>=5 and factor2<19 and (factor3="b"or factor3="c") and factor4 不同于 missing 且 newvar 等于 missing,我希望 newvar 取值 1

理想情况下,我想指定不同的条件,因此一些观察值将在变量 newvar 中取值 1、2、3 和 4,具体取决于其他几个变量的值。

这在 STATA 中非常简单直观,想知道在 R 中是否有简单直观的方法来做同样的事情。

最佳答案

根据多个条件为多个值生成一个新变量

这部分问题没有明确解决:

Ideally I want to specify different conditions, so some observations will be value 1, 2, 3 and 4 in the variable newvar dependent on the values of several other variables.

一个简单的解决方案是使用 case_when。与 Stata 的 recode 类似,它允许您同时指定多个值。

它的工作方式如下:

newvar = case_when(
condition1 ~ target value,
condition2 ~ target value)

例如var1 == 1 ~ 0

重要的是你需要在每一行之后有一个,

library(dplyr)

dataset <- mutate(dataset,
newvar = case_when(
factor1 >= 5 & factor2<19 & (factor3 =="b" | factor3 =="c") ~ 1,
factor1 == 1 ~ 2,
factor1 == 2 ~ 3,
TRUE ~ NA_real_ # This is for all other values
)) # not covered by the above.

dataset


# factor1 factor2 factor3 factor4 newvar
# 1 1 1 a 10 2
# 2 1 2 a 20 2
# 3 2 3 a 30 3
# 4 2 4 a 40 3
# 5 3 5 a 50 NA
# 6 3 6 b 60 NA
# 7 4 7 b 70 NA
# 8 4 8 b 80 NA
# 9 5 9 b 90 1
# 10 5 10 b 100 1
# 11 6 11 c 110 1
# 12 6 12 c 120 1
# 13 7 13 c 130 1
# 14 7 14 c 140 1
# 15 8 15 c 150 1
# 16 8 16 d 160 NA
# 17 9 17 d 170 NA
# 18 9 18 d 180 NA
# 19 10 19 d 190 NA
# 20 10 20 d NA NA

请注意,您不能使用NA(缺失)作为目标值,而是使用以下之一

  • NA_character_
  • NA_real_
  • NA_complex_
  • NA_double_

关于R 代码 : how to generate variable based on multiple conditions from other variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998819/

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