R 对列中的值进行计数,然后重置
我正在尝试创建一个列,该列计算名称的数量,每次不同时都从头开始,如下所示:R 对列中的值进行计数,然后重置,r,R,我正在尝试创建一个列,该列计算名称的数量,每次不同时都从头开始,如下所示: NAME ID PIERRE 1 PIERRE 2 PIERRE 3 PIERRE 4 JACK 1 ALEXANDRE 1 ALEXANDRE 2 可再现数据 structure(list(NAME = structure(c(3L, 3L, 3L, 3L, 2L, 1L, 1L), .Label
NAME ID
PIERRE 1
PIERRE 2
PIERRE 3
PIERRE 4
JACK 1
ALEXANDRE 1
ALEXANDRE 2
可再现数据
structure(list(NAME = structure(c(3L, 3L, 3L, 3L, 2L, 1L, 1L), .Label =
c("ALEXANDRE",
"JACK", "PIERRE"), class = "factor")), class = "data.frame", row.names
= c(NA,
-7L))
使用
dplyr
和数据。表
:
df %>%
group_by(ID_temp = rleid(NAME)) %>%
mutate(ID = seq_along(ID_temp)) %>%
ungroup() %>%
select(-ID_temp)
setDT(df)[, ID := seq_len(.N), by=rleid(NAME)]
或者只是数据。表:
df %>%
group_by(ID_temp = rleid(NAME)) %>%
mutate(ID = seq_along(ID_temp)) %>%
ungroup() %>%
select(-ID_temp)
setDT(df)[, ID := seq_len(.N), by=rleid(NAME)]
您可以沿每个组中的元素(=名称)构建序列:
或者,如果名称以后可能再次出现,并且仍应算作新组(=名称更改),例如:
groups这里有一个快速的方法
首先,您可以设置数据:
mydata请包含您已经拥有的代码我的代码非常重要,这就是为什么我举了一个简单的例子,我可以使用这个原则。您到底想要什么?@P.Vauclin Mark的意思是显示您迄今为止所尝试的内容,以及一些我们可以复制粘贴并使用的代码。查找dput()函数以帮助完成此操作