假设我们有一个数据框,其中有两个列:“ID”和“值”。我们希望按照ID对行进行编号,但是名称为“yes”的值始终具有编号1,名称为“no”的值始终具有编号2,其他值则依次编号。
可以使用如下代码实现目标:
library(dplyr)
df <- data.frame(ID = c(1,1,1,2,2,2,3,3,3),
value = c("yes", "no", "maybe", "yes", "maybe", "no", "maybe", "yes", "no"))
df %>%
group_by(ID) %>% # 按ID分组
mutate(number = if_else(value == "yes", 1, # 如果value是yes,则编号为1
if_else(value == "no", 2, # 如果value是no,则编号为2
dense_rank(value)))) # 否则按照其他值的稠密排名进行编号
这里使用dplyr
中的group_by
和mutate
函数来分组对每个ID的行进行编号。if_else
函数用于确定每个值的编号,dense_rank
函数用于按照题目要求对其他值进行编号。最后,我们得到一个新的数据框,其中每一行都有一个匹配的行号。
上一篇:按ID分类的天数差距
下一篇:按ID分组比较两列R