[英]Modifying seq_along with duplicates
这里有seq专家吗?
我想计算每个 id 的值的数量。 以正确的顺序从 1 计数到 n 可以正常工作。 但是重复的值应该用相同的数字标记。
我缺少的 seq 中的任何参数?
代表。 例如:“count_n”是我实际创建的值,“need”是所需的 output。
先感谢您。 干杯
Date <- as.Date(c('2006-08-30','2006-08-30','2006-08-23', '2006-09-06',
'2006-09-13', '2006-09-20'))
ID <- c("x1","x1","x1","X2","X3","x1")
need<- c(2,2,1,1,1,3)
df<-data.frame(ID,Date,need)
df<- df%>% arrange(Date)
df$count_n <- ave(as.numeric(df$Date),df$ID,FUN = seq_along)
ID Date need count_n
1 x1 2006-08-23 1 1
2 x1 2006-08-30 2 2
3 x1 2006-08-30 2 3
4 X2 2006-09-06 1 1
5 X3 2006-09-13 1 1
6 x1 2006-09-20 3 4
我们可以将Date
转换为每个ID
的factor
,这将为您提供每个Date
的唯一值
ave(as.integer(df$Date),df$ID,FUN = factor)
#[1] 1 2 2 1 1 3
我们还可以将dense_rank
与dplyr
一起使用
library(dplyr)
df %>%
group_by(ID) %>%
mutate(count_n = dense_rank(Date))
# ID Date need count_n
# <fct> <date> <dbl> <int>
#1 x1 2006-08-23 1 1
#2 x1 2006-08-30 2 2
#3 x1 2006-08-30 2 2
#4 X2 2006-09-06 1 1
#5 X3 2006-09-13 1 1
#6 x1 2006-09-20 3 3
我们可以在sort
ed 'Date' 上使用match
library(dplyr)
df %>%
group_by(ID) %>%
mutate(need = match(Date, sort(unique(Date))))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.