R 按id对列中的连续值进行计数

R 按id对列中的连续值进行计数,r,R,我有一个数据框,如下所示: df <- data.frame( id= c(1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3), name= c("john","bob","bob","bob","bob","bob","leo","bob","bob","max&qu

我有一个数据框,如下所示:

df <- data.frame(
  id= c(1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3),
  name= c("john","bob","bob","bob","bob","bob","leo","bob","bob","max","mike","mike","mike","mike","mike","mike","mike","Ronaldo","mike")
)
expected_output<-data.frame(
id=c(2,3),
column_name="name",
value=c("bob","Mike"),
count=c(5,7))
我想计算一个特定值在名称列中按id背靠背分组出现的次数

我的期望如下:

df <- data.frame(
  id= c(1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3),
  name= c("john","bob","bob","bob","bob","bob","leo","bob","bob","max","mike","mike","mike","mike","mike","mike","mike","Ronaldo","mike")
)
expected_output<-data.frame(
id=c(2,3),
column_name="name",
value=c("bob","Mike"),
count=c(5,7))

感谢您的提前帮助

如果您想为每个id选择最大连续名称,您可以首先使用data.table::rleid对连续名称进行计数,并仅保留每个id中的最大值


尝试过任何东西吗?为什么id=1没有出现在最终输出中?@RonakShah因为我只会计算那些具有连续值的id=1只有一个值不需要计算谢谢你这么多,不知怎么的,这就是我想让我自己去做的您可以添加filtercount>1以删除id=1。请回复我的电子邮件好吗?我给你发了一封电子邮件我现在正在重新发送