Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 修改序号和副本_R_Duplicates_Seq - Fatal编程技术网

R 修改序号和副本

R 修改序号和副本,r,duplicates,seq,R,Duplicates,Seq,这里有seq专家吗 我想计算每个id的值的数量。按正确的顺序从1到n进行计算可以。但是重复的值应该用相同的数字标记 seq中有我缺少的任何参数吗 报告。例:“count_n”是我实际创建的值,“need”是期望的输出 先谢谢你。干杯 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","X

这里有seq专家吗

我想计算每个id的值的数量。按正确的顺序从1到n进行计算可以。但是重复的值应该用相同的数字标记

seq中有我缺少的任何参数吗

报告。例:“count_n”是我实际创建的值,“need”是期望的输出

先谢谢你。干杯

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
日期
转换为
因子
,这将为每个
日期
提供唯一的值

ave(as.integer(df$Date),df$ID,FUN = factor)
#[1] 1 2 2 1 1 3
我们还可以使用
densite\u-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
库(dplyr)
df%>%
分组依据(ID)%>%
变异(计数=密集等级(日期))
#身份证日期需要计数\u n
#           
#1 x1 2006-08-23 11
#2 x1 2006-08-30 2
#3 x1 2006-08-30 2
#4 X2 2006-09-06 11
#5 X3 2006-09-13 11
#6 x1 2006-09-20 3

我们可以在
排序上使用
匹配
编辑的“日期”

library(dplyr)
df %>% 
   group_by(ID) %>%
   mutate(need = match(Date, sort(unique(Date))))

这个很好用!从未想过这个解决方案。谢谢你,罗纳克!
library(dplyr)
df %>% 
   group_by(ID) %>%
   mutate(need = match(Date, sort(unique(Date))))