[英]Can I slice a data frame using an ifelse function?
我有一個大數據框,如果滿足x >= 4
的某個條件,我只想要其中的一行。 但是,在我的 50 個條目中,有 43 個達到x >= 4
。 對於其他人,我想取 x 達到的最高值。 所以,我想創建將過濾x >= 4
並取該值的代碼,除非沒有達到 4,然后我想要 tail_end。
我目前有以下代碼,我不確定如何合並ifelse
語句:
selection_T01 <- df_T01 %>%
group_by(id) %>%
filter(X >= 0) %>%
slice(1) %>%
ungroup()
這個想法是創建一個單獨的條件列並將其用作分組變量。 在處理數據幀組時,我推薦使用 nest-map-unnest 方法。
library(dplyr)
library(tidyr)
library(purrr)
get_selection <- function(condition, df) {
func_slice <- ifelse(
condition,
slice_max,
slice_min
)
func_slice(df, Sepal.Length)
}
selection <- iris |>
mutate(
condition = Sepal.Length > 6
) |>
group_by(Species, condition) |>
nest() |>
mutate(
selection = map2(condition, data, get_selection)
) |>
select(-data) |>
unnest(cols = c(selection))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.