`dplyr::group_by` 中的因子是否有限制?
Is there a limit of factors in `dplyr::group_by`?
我正在苦苦思索如何使用变量的 lag
来计算组件的磨损。但是,我需要计算不同组的磨损,所以我使用 group_by
函数,但这是一个问题,当我使用需要分组的变量时,这会导致一列“NA” ,但是当我通过将具有较少因素的另一个变量分组进行测试时,计算有效。
我使用的数据框有 4093902
行和 52
行。我需要分组以执行磨损计算的变量具有 90183
个因子。另一个我测试过并且有效的有 11321
个因素。
这是我使用的代码:
final_date = result_data %>%
arrange((time)) %>%
group_by(id_specific)%>%
mutate(wear = dplyr::lag(some_value, n = 1, default = NA) - some_value)
有谁知道分组有没有因子限制?或者关于如何执行此计算的任何其他提示?
NA
可以是 lag
的结果,其中 returns 第一个值默认为 NA
或来自其他列值也可以是 NA
。因此,当我们执行 -
(或任何算术)时,如果 lhs 或 rhs 中有任何 NA,则它 returns NA
。一种选择是使用可以使用 na.rm = TRUE
的函数 (rowSums
)
library(dplyr)
final_date <- result_data %>%
arrange((time)) %>%
group_by(id_specific)%>%
mutate(some_value_new = dplyr::lag(some_value, n = 1,
default = NA)) %>%
ungroup %>%
mutate(wear = rowSums(cbind(some_value_new, -1 * some_value),
na.rm = TRUE), some_value_new = NULL)
注意:最好在执行 rowSums
之前先 ungroup
以获得一些效率
我正在苦苦思索如何使用变量的 lag
来计算组件的磨损。但是,我需要计算不同组的磨损,所以我使用 group_by
函数,但这是一个问题,当我使用需要分组的变量时,这会导致一列“NA” ,但是当我通过将具有较少因素的另一个变量分组进行测试时,计算有效。
我使用的数据框有 4093902
行和 52
行。我需要分组以执行磨损计算的变量具有 90183
个因子。另一个我测试过并且有效的有 11321
个因素。
这是我使用的代码:
final_date = result_data %>%
arrange((time)) %>%
group_by(id_specific)%>%
mutate(wear = dplyr::lag(some_value, n = 1, default = NA) - some_value)
有谁知道分组有没有因子限制?或者关于如何执行此计算的任何其他提示?
NA
可以是 lag
的结果,其中 returns 第一个值默认为 NA
或来自其他列值也可以是 NA
。因此,当我们执行 -
(或任何算术)时,如果 lhs 或 rhs 中有任何 NA,则它 returns NA
。一种选择是使用可以使用 na.rm = TRUE
rowSums
)
library(dplyr)
final_date <- result_data %>%
arrange((time)) %>%
group_by(id_specific)%>%
mutate(some_value_new = dplyr::lag(some_value, n = 1,
default = NA)) %>%
ungroup %>%
mutate(wear = rowSums(cbind(some_value_new, -1 * some_value),
na.rm = TRUE), some_value_new = NULL)
注意:最好在执行 rowSums
之前先 ungroup
以获得一些效率