按 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$
就可以了。
我想为数据集中的每个组创建一个新变量 我正在使用此代码:
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$
就可以了。