在 R 中使用 if else 条件创建新变量
Create new variable with if else condition in R
我知道有很多这样的查询,但我尝试了不同的方法,但无法解决我的问题:
所以我有一个包含投票百分比的数据集,但它们对于不同的公投有不同的定义,我想创建一个新列,它是满足条件时变量值之间的差异,或者只是保留该变量的值不满足条件时的值。基本上对于某些公投来说,它会保留它的百分比值,而其他人会计算 100 和它现在的值之间的差值。像这样:
id <- c(1, 2, 3)
yes.perc <- c(66.7, 50, 49)
ref.code <- c(6040,6041,6042)
df <- as.data.frame(c(id, percentage, ref)
我试过了,例如:
df%>%
mutate(vote=ifelse(ref.code == 6040|6041, (100-yes.perc), print(yes.perc)))
并且:
df%>%
mutate(vote=ifelse(ref.code == 6040|6041, 100-yes.perc, yes.perc))
还有很多类似的东西,但我一直在为所有行打印差异 (100-yes.perc),无论它们是否满足条件。我也曾尝试将 "ref.code" 变量更改为因子或数字,但没有太大区别。
谢谢!
1) |
用于regex,这里需要使用%in%
2) 不要在 ifelse
中打印
library(dplyr)
df%>% mutate(vote=ifelse(ref.code %in% c(6040, 6041), (100-yes.perc), yes.perc))
# id yes.perc ref.code vote
#1 1 66.7 6040 33.3
#2 2 50.0 6041 50.0
#3 3 49.0 6042 49.0
library("dplyr")
df <- data.frame(
id = 1:3,
percentage = c(66.7, 50, 49),
ref = c(6040, 6041, 6042)
)
df %>%
mutate(vote = ifelse(ref %in% c(6040, 6041), 100 - percentage, percentage))
我知道有很多这样的查询,但我尝试了不同的方法,但无法解决我的问题:
所以我有一个包含投票百分比的数据集,但它们对于不同的公投有不同的定义,我想创建一个新列,它是满足条件时变量值之间的差异,或者只是保留该变量的值不满足条件时的值。基本上对于某些公投来说,它会保留它的百分比值,而其他人会计算 100 和它现在的值之间的差值。像这样:
id <- c(1, 2, 3)
yes.perc <- c(66.7, 50, 49)
ref.code <- c(6040,6041,6042)
df <- as.data.frame(c(id, percentage, ref)
我试过了,例如:
df%>%
mutate(vote=ifelse(ref.code == 6040|6041, (100-yes.perc), print(yes.perc)))
并且:
df%>%
mutate(vote=ifelse(ref.code == 6040|6041, 100-yes.perc, yes.perc))
还有很多类似的东西,但我一直在为所有行打印差异 (100-yes.perc),无论它们是否满足条件。我也曾尝试将 "ref.code" 变量更改为因子或数字,但没有太大区别。 谢谢!
1) |
用于regex,这里需要使用%in%
2) 不要在 ifelse
library(dplyr)
df%>% mutate(vote=ifelse(ref.code %in% c(6040, 6041), (100-yes.perc), yes.perc))
# id yes.perc ref.code vote
#1 1 66.7 6040 33.3
#2 2 50.0 6041 50.0
#3 3 49.0 6042 49.0
library("dplyr")
df <- data.frame(
id = 1:3,
percentage = c(66.7, 50, 49),
ref = c(6040, 6041, 6042)
)
df %>%
mutate(vote = ifelse(ref %in% c(6040, 6041), 100 - percentage, percentage))