Создать новую переменную с условием if else в R - PullRequest
0 голосов
/ 18 апреля 2020

Я знаю, что есть много подобных запросов, но я пробовал разные вещи, и я не мог решить свою проблему:

Итак, у меня есть набор данных с процентами голосов, но они определены по-разному для разных референдумов, и я хочу создать новый столбец, в котором будет разница между значением переменной, если условие выполнено, или просто сохранить значение этой переменной, если условие не выполнено. В основном для определенных референдумов, чтобы он сохранил процентное значение, которое он имеет, а для других, чтобы вычислить разницу между 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.per c) для всех строк независимо от того, соответствуют они условию или нет. Я также пытался изменить переменную «ref.code» на множитель или цифру c, но без особой разницы. Спасибо!

Ответы [ 2 ]

1 голос
/ 18 апреля 2020
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 голос
/ 18 апреля 2020

1) | используется в регулярных выражениях, здесь вам нужно использовать %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
...