【问题标题】:How to find median of a column in R如何在R中找到列的中位数
【发布时间】:2021-11-10 02:55:42
【问题描述】:

我正在尝试使用Rthis sample csv file 中找到weight 列的中值。但是代码什么也没返回。问题出在哪里?

diabets <- read.csv ("https://hbiostat.org/data/repo/diabetes.csv")
median (diabets$weight)

然后在找到中位数之后,我需要打印体重低于这个中位数的女性。我该怎么做?

请不要使用额外的库。

【问题讨论】:

    标签: r csv data-analysis median


    【解决方案1】:
    library(dplyr)
    
    diabets %>% 
      filter(gender == "female") %>% 
      filter(weight < median(weight, na.rm = TRUE))
    
    # A tibble: 123 x 19
          id  chol stab.glu   hdl ratio glyhb location    age gender height weight frame bp.1s bp.1d
       <int> <int>    <int> <int> <dbl> <dbl> <chr>     <int> <chr>   <int>  <int> <chr> <int> <int>
     1  1000   203       82    56  3.60  4.31 Buckingh~    46 female     62    121 medi~   118    59
     2  1024   242       82    54  4.5   4.77 Louisa       60 female     65    156 medi~   130    90
     3  1030   238       75    36  6.60  4.47 Louisa       27 female     60    170 medi~   130    80
     4  1031   183       79    46  4     4.59 Louisa       40 female     59    165 medi~    NA    NA
     5  1036   213       83    47  4.5   3.41 Louisa       33 female     65    157 medi~   130    90
     6  1271   228       66    45  5.10  4.61 Buckingh~    24 female     61    113 medi~   100    70
     7  1277   179       80    92  1.90  4.18 Buckingh~    41 female     72    118 small   144   112
     8  1282   254       84    52  4.90  4.52 Buckingh~    43 female     62    145 medi~   125    70
     9  1317   136       81    51  2.70  4.58 Buckingh~    22 female     66    160 large   105    85
    10  1321   218       68    46  4.70  3.89 Buckingh~    52 female     62    170 medi~   142    79
    # ... with 113 more rows, and 5 more variables: bp.2s <int>, bp.2d <int>, waist <int>,
    #   hip <int>, time.ppn <int>
    

    【讨论】:

    • 我不能使用额外的库。
    • 您也可以保持堆叠过滤器而不是多次调用该函数 - diabets %&gt;% filter(gender == "female", weight &lt; median(weight, na.rm = TRUE))
    【解决方案2】:

    na.rm = TRUE 参数将找到忽略NA 的中位数 权重中有一个NA

    sum(is.na(diabetes$weight))
    [1] 1
    

    median(diabetes$weight, na.rm = TRUE) 返回 172.5 所以,

    diabetes[diabetes$gender== "female" & diabetes$weight < 172.5, ]
    

    将打印体重低于此中位数的女性。

    添加

    med <- median(diabetes$weight, na.rm = TRUE)
    diabetes[(diabetes$gender== "female" & diabetes$weight < med), ]
    

    diabetes[(diabetes$gender== "female" & diabetes$weight < median(diabetes$weight, na.rm = TRUE)), ]
    

    【讨论】:

    • 中位数看起来不错。但是当我添加该行以打印小于 172.5 的行时,它也会打印大于该行和男性的行!诡异的。 6 1008 248 94 69 3.6 4.81 Buckingham 34 male 71 190
    • 这里是代码:diabetes &lt;- read.csv ("https://hbiostat.org/data/repo/diabetes.csv") diabetes[diabetes$gender== "female" &amp;&amp; diabetes$weight &lt; 172.5, ]
    • @TinaJ 真的很抱歉。只有一个&amp; 必须在代码中。 diabetes[diabetes$gender== "female" &amp; diabetes$weight &lt; 172.5, ]。我编辑了我的代码,对于混淆表示歉意。
    • 现在很酷。以及如何传递中值 var 而不是明确指定 172.5?
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 2021-11-11
    • 2021-12-19
    • 1970-01-01
    • 2021-08-20
    • 2021-03-17
    • 1970-01-01
    • 2016-03-21
    相关资源
    最近更新 更多