[英]Why is R giving me NA values when there is data in the 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.