我有一个4级(阶段2、阶段1、升高、正常)长格式 Dataframe 中的因子变量(类别),我想用每个ID一个级别(新类别)替换。
条件:
如果在连续的行中有〉=2个“阶段2”,我希望该级别仅为阶段2。
如果没有,但有〉=2 '阶段1'在连续的行,我希望水平是阶段1只。
如果没有,但有〉=2 '提高'在连续行,我希望水平只提高。
如果没有,但有〉=2 '正常'在连续的行,我希望水平是正常的。
如果每个ID没有两个连续的相同级别-我希望该级别是每个ID中出现频率最高的级别。
如果所有级别只出现一次-我希望该级别是可用的最高级别。(级别的顺序从最高到最低-阶段2,阶段1,升高,正常)。
下面是我的数据示例:
ID <- c(3, 3, 3, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10)
Category <- c("elevated", "elevated", "stage 2", "stage 1", "normal", "normal",
"stage 1", "stage 1", "stage 1", "stage 2", "stage 2", "elevated",
"stage 1", "elevated", "stage 1", "elevated", "stage 2", "stage 1",
"elevated")
df1 <- data.frame(ID, Category)
这是我希望它看起来像:
我希望这是有意义的,谢谢你的任何帮助!!
1条答案
按热度按时间qoefvg9y1#
我们可能需要
group_by
ID,然后使用一个复杂的case_when
语句。理解如何处理which_max
调用中的关系仍然很重要。此输出与所需的不同,因为我相信您可能有不同的建议来处理最后一个条件中“最频繁”的关系。