R-按姓名和周数分组ID,然后在受试者中添加周数发生次数
我有以下数据集:R-按姓名和周数分组ID,然后在受试者中添加周数发生次数,r,dplyr,group-by,mutate,R,Dplyr,Group By,Mutate,我有以下数据集: structure(list(First.Name = c(5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5007L, 5007L, 5007L, 5007L, 5007L), Week_Year = structure(c(21L, 21L, 21L, 21L, 21L, 22L, 22L, 2
structure(list(First.Name = c(5006L, 5006L, 5006L, 5006L, 5006L,
5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L, 5006L,
5006L, 5006L, 5007L, 5007L, 5007L, 5007L, 5007L), Week_Year = structure(c(21L,
21L, 21L, 21L, 21L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 23L, 23L,
23L, 23L, 17L, 17L, 18L, 18L, 18L), .Label = c("2", "3", "4",
"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26",
"27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37",
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48",
"49"), class = "factor")), row.names = c(NA, -21L), groups = structure(list(
First.Name = 5006:5007, .rows = structure(list(1:16, 17:21), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = 1:2, class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
其中一个子集看起来像:
# A tibble: 21 x 2
# Groups: First.Name [2]
First.Name Week_Year
<int> <fct>
5006 23
5006 23
5006 24
5006 24
5006 24
5006 24
5007 18
5007 18
5007 19
5007 19
我一直在玩弄下面的表单,但只有在使用summary
函数时才能使其工作,这不是我所需要的
df %>%
group_by(First.Name, Week_Year) %>%
mutate(Week_Count = row_number())
由于这些值是连续的,您只需根据
周\年的最小值重新编制索引即可:
df %>%
dplyr::group_by(First.Name) %>%
dplyr::mutate(week_count = Week_Year - min(Week_Year) + 1) %>%
dplyr::ungroup()
是的,谢谢!从未听说过cur\u group\u id
,很高兴知道,事实上,当它转到下一个主题时,不是将周数重置为1
,它继续从上一个主题的最后一个计数开始按顺序计数。确保您的分组依据
您的两个分组变量:First.Name
和Week\u Year
。这就是我所拥有的,正如您在答案中所发布的一样。它首先标识。对于受试者5006
,Name
的周数一直计算到第7周,然后在Week\u Count
ID 8开始受试者5007
,依此类推。没错,cur\u group\u ID
不适用于两个分组变量。第二个选项不起作用吗?
df %>%
dplyr::group_by(First.Name) %>%
dplyr::mutate(week_count = Week_Year - min(Week_Year) + 1) %>%
dplyr::ungroup()