【问题标题】:Group by a variable in R and then run dplyr case_when按 R 中的变量分组,然后运行 ​​dplyr case_when
【发布时间】:2020-06-15 10:43:35
【问题描述】:

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

 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

我希望数据集中的每一行都有一个值,而不是每个组。请帮忙。

【问题讨论】:

  • 不要使用data$Serves_In_Fault,只使用Serves_In_Fault

标签: r group-by dplyr case-when


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    相关资源
    最近更新 更多