首页 > 解决方案 > 按 R 中的变量分组,然后运行 ​​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"
  )
)

虽然,这给了我一个错误

错误:列test的长度必须为 93(组大小)或 1,而不是 164

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

标签: rgroup-bydplyrcase-when

解决方案


问题是,你在它面前排位Servers_In_Fault赛。data$这样,您访问的是整个结构的新副本,而data不是data正在处理的结构。你已经在里面了data,所以你不需要这样做。当您执行 agroup_by()时,您正在处理数据框的子组,一次一个。因此,当您尝试处理大小为 93 的子组时,向它扔一个data164 行的新副本时,大小不匹配。只要把data$管子里面的东西去掉就没事了。


推荐阅读