首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中使用if else条件创建新变量

在R中使用if else条件创建新变量
EN

Stack Overflow用户
提问于 2020-04-18 21:59:48
回答 2查看 171关注 0票数 0

我知道有很多这样的问题,但我尝试了不同的方法,但我无法解决我的问题:

所以我有一个带有投票百分比的数据集,但它们在不同的公投中定义不同,我想创建一个新列,如果满足某个条件,则表示变量的值之间的差,如果不满足条件,则只保留该变量的值。基本上,对于某些全民公投,它保留它拥有的百分比值,而其他人则计算100与现在的值之间的差值。如下所示:

代码语言:javascript
复制
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)

我试过这样做,例如:

代码语言:javascript
复制
df%>%
 mutate(vote=ifelse(ref.code == 6040|6041, (100-yes.perc), print(yes.perc)))

和:

代码语言:javascript
复制
df%>%
 mutate(vote=ifelse(ref.code == 6040|6041, 100-yes.perc, yes.perc))

还有很多类似的东西,但我一直在打印所有行的差值(100-yes.perc),无论它们是否满足条件。我还尝试将"ref.code“变量更改为因子或数字,但效果不大。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-18 22:03:12

1)正则表达式中使用|,这里需要使用%in%

2)不在ifelse中打印

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2020-04-18 22:09:52

代码语言:javascript
复制
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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61290352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档