簡體   English   中英

我可以使用 ifelse 函數對數據框進行切片嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM