Создать столбец, в котором указывается источник числа между первыми двумя столбцами

#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