按 R 中的变量分组,然后 运行 dplyr case_when

Group by a variable in R and then run dplyr case_when

我想为数据集中的每个组创建一个新变量 我正在使用此代码:

 data <- data  %>%
  group_by(Set_Number , Set_score) %>%
  mutate(test = case_when(
    lag(data$Serves_In_Fault) == "Serve In" ~ "Second Serve" ,
    lag(data$Serves_In_Fault) == "Fault" ~ "First Serve"
  )
)

不过,这给了我一个错误

Error: Column test must be length 93 (the group size) or one, not 164

我想要数据集中每一行的值,而不是每个组的值。请帮忙。

问题是,您排位赛 Servers_In_Fault 前面有 data$。这样,您访问的是 data 的整个结构的新副本,而不是正在处理的 data 结构。您已经在 data 之内,所以您不需要这样做。当您执行 group_by() 时,您处理的是数据框的子组,一次一个。因此,当您尝试处理大小为 93 的子组时,您将 data 的新副本及其完整的 164 行扔给它,大小不匹配。只需删除管道中的 data$ 就可以了。