У меня есть фрейм данных, содержащий стадию человека, как показано ниже (это только очень большая выборка):
df = structure(list(DeceasedDate = c(0.283219178082192, 1.12678843226788,
2.02865296803653, 0.892465753424658, NA, 0.88013698630137, NA
), LastClinicalEventMonthEnd = c(0.244862981988838, 1.03637744165398,
10.9464611555048, 0.763698598427194, 3.35011412354135, 0.677397228564181,
3.83687211440893), FirstYStage = c("N/A", "2", "2", "2", "2",
"2", "3.1"), SecondYStage = c("N/A", "N/A", "2", "N/A", "2",
"N/A", "3.1"), ThirdYStage = c("N/A", "N/A", "2", "N/A", "2",
"N/A", "3.1"), FourthYStage = c("N/A", "N/A", "N/A", "N/A", "2",
"N/A", "3.1"), FifthYStage = c("N/A", "N/A", "N/A", "N/A", "N/A",
"N/A", "N/A")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-7L))
5 правых столбцов - это сцена человека, но они еще не содержат всей информации. Мне нужно включить информацию в первые два столбца, в которых цифры указаны в годах, следующим образом:
если значение в столбце 1 меньше года, FirstYStage должен быть «Умершим», а также все последующие столбцы (человек все еще мертв ...); если значение находится в диапазоне от 1 до 2, значение SecondYStage должно быть «Умершим» и т. д.
если значение в столбце 2 меньше года, значение SecondYStage должно быть «EndOfEvents»; если значение находится между 1 и 2, значение SecondYStage должно быть «EndOfEvents» и т. д.
Таким образом, ожидаемый результат в этом случае должен быть:
df_updated = structure(list(DeceasedDate = c(0.283219178082192,
1.12678843226788,
2.02865296803653, 0.892465753424658, NA, 0.88013698630137, NA
), LastClinicalEventMonthEnd = c(0.244862981988838, 1.03637744165398,
10.9464611555048, 0.763698598427194, 3.35011412354135, 0.677397228564181,
3.83687211440893), FirstYStage = c("Deceased", "2", "2", "Deceased",
"2", "Deceased", "3.1"), SecondYStage = c("Deceased", "Deceased",
"2", "Deceased", "2", "Deceased", "3.1"), ThirdYStage = c("Deceased",
"Deceased", "Deceased", "Deceased", "2", "Deceased", "3.1"),
FourthYStage = c("Deceased", "Deceased", "Deceased", "Deceased",
"2", "Deceased", "3.1"), FifthYStage = c("Deceased", "Deceased",
"Deceased", "Deceased", "LastEvent", "Deceased", "LastEvent"
)), row.names = c(NA, -7L), class = c("tbl_df", "tbl", "data.frame"
))
Одним из важных моментов является то, что «Смерти» следует отдавать приоритет, иными словами, если есть столкновение, и с одной стороны, есть число, а «смерть» противоречит ему, мы должны предпочесть смерть.
Как мне сделать это наиболее эффективным способом? В данный момент я делаю «если», но думаю, что это не лучший курс действий