#r #if-statement #dplyr
#r #if-оператор #dplyr
Вопрос:
У меня есть фрейм данных, который содержит три столбца:
df <- structure(list(lowage = c(45, 15, 9, 51, 22, 45, 4, 4, 9, 25),
highage = c(50, 21, 14, 60, 24, 50, 8, 8, 14, 30)), .Names = c("lowage",
"highage"), row.names = c(NA, 10L), class = "data.frame")
df$random_number <- apply(df, 1, function(x) sample(seq(x[1], x[2]), 1))
Я хочу создать четвертый столбец, который сообщает нам источник random_number
, откуда происходит. Так, например, в первой строке столбцы lowage
= 45 и highage
= 46. Скажем, сгенерированное случайное число равно 46 (например). Я хотел бы создать четвертый столбец, в котором он указан как метка «highage», поскольку он исходит из столбца highage. И так далее…
Если решение может быть dplyr
введено, это было бы здорово!
Комментарии:
1. Вы выполняете выборку из последовательности между
lowage
иhighage
при использованииseq(x[1], x[2])
. Вы имели в видуc
?
Ответ №1:
Это то, чего ты хочешь?
df %>%
mutate(newcol =
case_when(random_number == lowage ~ "lowage",
random_number == highage ~ "highage",
TRUE ~ "between"))
# lowage highage random_number newcol
# 1 45 50 47 between
# 2 15 21 18 between
# 3 9 14 13 between
# 4 51 60 57 between
# 5 22 24 23 between
# 6 45 50 49 between
# 7 4 8 4 lowage
# 8 4 8 6 between
# 9 9 14 9 lowage
# 10 25 30 27 between