मैं नीचे अपना कोड हूं, मैं सोच रहा था कि अंतिम आउटपुट में n = n() का परिणाम क्यों नहीं दिखाया गया है?

library(tidyverse)
hsb <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/hsb.csv')

hsb %>% dplyr::select(math, sector) %>% group_by(sector) %>% 
summarise(across(.fns = list(mean=mean, sd=sd), n = n()))
1
rnorouzian 13 सितंबर 2020, 21:44

1 उत्तर

सबसे बढ़िया उत्तर

ऐसा लगता है कि समस्या across के क्लोजिंग ब्रैकेट के साथ है। हम चाहते हैं कि n प्रत्येक मामले के लिए दोहराने के बजाय एक एकल कॉलम हो, इसलिए उसके लिए, हम across को बंद कर सकते हैं और n = n() का अलग से उपयोग कर सकते हैं यानी across के बाहर।

library(dplyr)
hsb %>%
   dplyr::select(math, sector) %>%
   group_by(sector) %>% 
   summarise(across(.fns = list(mean=mean, sd=sd)), n = n(), .groups = 'drop')
# A tibble: 2 x 4
#  sector math_mean math_sd     n
#   <int>     <dbl>   <dbl> <int>
#1      0      11.4    7.08  3642
#2      1      14.2    6.36  3543

बस यह दिखाने के लिए कि अगर हमें कई 'एन' कॉलम की जरूरत है (वास्तव में जरूरत नहीं है)। यहां, हम select केवल दो कॉलम हैं और उनमें से एक ग्रुपिंग कॉलम है, इसलिए यह केवल एक 'n' लौटाएगा।

hsb %>%
  dplyr::select(math, sector) %>%
  group_by(sector) %>%
  summarise(across(.fns = list(mean = mean, sd = sd, 
         n = ~ n())), .groups = 'drop')=
# A tibble: 2 x 4
#  sector math_mean math_sd math_n
#   <int>     <dbl>   <dbl>  <int>
#1      0      11.4    7.08   3642
#2      1      14.2    6.36   3543
1
akrun 13 सितंबर 2020, 21:58