繁体   English   中英

用重复项修改 seq_along

[英]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转换为每个IDfactor ,这将为您提供每个Date的唯一值

ave(as.integer(df$Date),df$ID,FUN = factor)
#[1] 1 2 2 1 1 3

我们还可以将dense_rankdplyr一起使用

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM