簡體   English   中英

為什么 nest 不給我多個數據集並在整個 dataframe 上運行?

[英]Why is nest not giving me multiple datasets and operating on the entire dataframe?

我正在嘗試通過使用 nest 為每個 class 制作數據集,這樣做之后,我需要執行一些需要我使用 distinct() 以避免重復的計算。

但是,當我嘗試時,R 似乎忽略了嵌套並繼續前進。 結果,我只有總體結果和一個 dataframe。我如何讓它工作,為什么它會失敗?

注意:我知道,對於下面的簡單示例,我不需要使用 nest 並且可以使用 group_by(),但我需要 nest() 作為我的實際數據並且很好奇為什么它不起作用。

#Set up and sample data
library(tidyverse)
test_data <- tibble(id = c(1, 1, 2, 2, 2, 3, 3, 3),
                    class = c("h", "h", "m", "h", "s", "m", "h", "h"),
                    gender = c("m", "m", "f", "f", "f", "m", "m", "m"))

#Runs but isn't correct
nested_test <- test_data %>%
  nest(data = class) %>%
  distinct(id, gender) %>%
  count(gender)

nested_test

不能 100% 確定我理解您的目標,但此代碼將除class之外的所有列嵌套到每個class的單獨 dataframe 中。 請注意,您首先指定所需的列,然后指定要分組的變量.by 然后它映射每個 dataframe,對每個應用distinct()count()

library(dplyr)
library(tidyr)
library(purrr)

nested_test <- test_data %>%
  nest(data = !class, .by = class) %>%
  mutate(data = map(
    data, 
    \(d) count(distinct(d, id, gender), gender)
  ))

結果:

#> nested_test
# A tibble: 3 × 2
  class data            
  <chr> <list>          
1 h     <tibble [2 × 2]>
2 m     <tibble [2 × 2]>
3 s     <tibble [1 × 2]>

#> nested_test$data
[[1]]
# A tibble: 2 × 2
  gender     n
  <chr>  <int>
1 f          1
2 m          2

[[2]]
# A tibble: 2 × 2
  gender     n
  <chr>  <int>
1 f          1
2 m          1

[[3]]
# A tibble: 1 × 2
  gender     n
  <chr>  <int>
1 f          1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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