Итак, сначала позвольте мне создать фиктивные данные для Gender
и Dose
в качестве векторов:
Gender <- sample(c("Male", "Female"), 100, replace = TRUE)
Dose <- round(runif(100, min = 30, max = 70),2)
Мы также определим здесь high_dose
, который может быть любым порогом, который вы предпочитаете:
high_dose <- 50
Создать data.frame
:
df <- data.frame(Dose = Dose,
Gender = Gender)
Использовать dplyr
для упрощения манипулирования данными:
# if you haven't already done so, you'll want to install.packages("dplyr")
library(dplyr)
df %>%
mutate(Level = ifelse(Dose >= high_dose, "High", "Low"),
Patient = row_number(),
Output = paste(Gender, Level, "Dose Patient", Patient, "has dose", Dose))
Давайте разберемся с этим.Во-первых, mutate
собирается добавить новые столбцы в наш df
.Мы начнем с Level
, используя ifelse
оценку, если Dose
больше или равно тому, что мы определили как high_dose
.
Далее я произвольно присвоил Patient
какномер строки.Вы можете изменить это, если имеет значение номер пациента.
Наконец, Output
вставляет эти столбцы вместе, причем все, что находится в кавычках, одинаково построчно.Если вас интересует только вывод, вы можете вызвать его просто: df$Output
data.table
подход:
library(data.table)
df <- data.table(Dose = Dose,
Gender = Gender)
df[, Level := ifelse(Dose >= high_dose, "High", "Low")]
df[, Patient := 1:100]
df[, Output := paste(Gender, Level, "Dose Patient", Patient, "has dose", Dose)]
df$Output
Альтернативный маршрут:
По правде говоря, выможно сделать все это только с помощью функции paste
, но я думаю, что dplyr
- лучший способ построчно видеть, что происходит с вашими данными.
paste(Gender, ifelse(Dose >= high_dose, "High", "Low"),
"Dose Patient", 1:100, "has dose", Dose)