我正在尝试改变这个 df 以获得两个新变量作为调查 ID 的形式。从 df 我想创建一个变量“调查”,它将按“年份”“日期”“城市”分组,然后如果“楼层”相同,则获得相同的“调查”。然后我想要第二个新变量“Rep”,它可以简单地按“年份”“日期”“城市”对组中的行进行总计。
当前 df:
所需的df:
我可以使用以下方式获得“代表”:
df <- df %>% group_by(年份,城市) %>% 变异(代表= seq_along(日期))
但我完全不知道如何生成“调查”变量。
这接近获得我想要的“调查”ID,但为 group_by 内的每个楼层生成 1,2 df <- df %>% group_by(年份,城市) %>% 变异(调查= seq_along(地板))
遵循这个答案将唯一的ID分配给dplyr中分组变量中的连续行 我也接近了,但组内的每个楼层仍然得到 1,2,1,2,而不是 1,1,2,2
df <- df %>% group_by(年份,城市) %>% 突变(调查=代表(seq(1,2),长度= 2))
这应该有效:
df <- df %>%
group_by(Year, Date, City) %>%
mutate(Survey = match(Floor, unique(Floor))) %>% #Assigns an id number to each of the matches starting from one
mutate(Rep = seq_along(Date)) %>%
ungroup()