【问题标题】:Median of every row in R, hundreds of columnsR中每一行的中位数,数百列
【发布时间】:2020-08-31 15:32:57
【问题描述】:

这个问题和这个问题很相似:Min and Median of Multiple Columns of a DF by Row in R 而且我知道有人以各种方式提出过问题,但我觉得他们没有充分解决我的问题。

我有一个包含 260 列的数据框。我想获得每一行的中位数,最好使用 dplyr 作为我喜欢的。上述链接问题的答案几乎是完美的,例如:

df %>% 
  rowwise() %>% 
   mutate(median = median(c(V1, V2, V3)))

完全按照我的要求工作并完成,但很像这个问题:Sum across multiple columns with dplyr

我宁愿不写出 260ish 列的名称。有没有办法接受上述命令并对其进行修改,使其输入所有 260 列?

【问题讨论】:

  • 查看c_across,例如mutate(median = median(c_across())
  • 一旦我意识到我的列都是字符类,就完美地工作了。这很奇怪,因为如果我只是在修复它之前在两个单独的列上使用中位数,它就可以正常工作。那好吧。谢谢!
  • 如果您的所有数据都是数字,为什么不能按照参考链接中的建议使用apply?即medians <- apply(df, 1, median)

标签: r dplyr


【解决方案1】:

这是一个使用数字数据集和整齐的诗句的例子

使用 dplyr、purrr 的库

library(tidyverse)


diabetes<-read.csv(url('https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv'))


diabetes$row_median = t(map(data.frame(t(diabetes)),median) %>% bind_cols())

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2017-08-31
    • 2023-01-19
    相关资源
    最近更新 更多