R语言:如何基于其他变量为factor变量设置层级与标签
解决方案
你可以通过提取按Order排序后每个唯一ID对应的Type值来补全labels参数,具体代码如下:
df %>% arrange(Order) %>% mutate(ID2 = factor(ID, levels = unique(.$ID), labels = distinct(., ID, Type) %>% pull(Type) ))
代码说明
arrange(Order):先将数据按Order列升序排列,保证后续提取的ID顺序符合要求。levels = unique(.$ID):从排序后的数据集里提取唯一的ID值,作为因子的水平,顺序和Order排序一致。labels = distinct(., ID, Type) %>% pull(Type):distinct(., ID, Type):提取每个ID对应的唯一Type(你的数据中同一ID的Type完全一致,无需担心冲突),且保留Order排序后的顺序。pull(Type):将提取出的Type列转为向量,作为因子的标签,和levels的顺序一一对应。
运行后生成的ID2变量会满足你的需求:因子水平是按Order排序的唯一ID,标签为对应ID的Type值。
内容的提问来源于stack exchange,提问作者Stataq
相关产品推荐
相关产品推荐

