相关疑难解决方法(0)

R中Row的多列的最小值和中值

鉴于dataframe如下:

V1  V2  V3
5   8   12
4   9   5
7   3   9
...
Run Code Online (Sandbox Code Playgroud)

如何将列添加到dataframe这3列的最小值和中值,为每行计算?

生成的DF应如下所示:

V1  V2  V3  Min  Median
5   8   12  5    8
4   9   5   4    5
7   3   9   3    7
...
Run Code Online (Sandbox Code Playgroud)

我试过用dplyr::mutate:

mutate(df, Min = min(V1,V2,V3)) 
Run Code Online (Sandbox Code Playgroud)

但这需要整个数据帧的最小值并将该值放在每一行中.我怎样才能获得每一行的最小值和中位数?

对于Mean,我可以使用rowMeansin mutate,但min和median没有类似的函数.

也尝试过,

lapply(df[1:3], median)
Run Code Online (Sandbox Code Playgroud)

但它只产生每列的中位数

dd <- read.table(header = TRUE, text = 'V1  V2  V3
5   8   12
4   9   5
7   3   9')
Run Code Online (Sandbox Code Playgroud)

r

3
推荐指数
2
解决办法
6011
查看次数

如何使用data.table有效地计算行中位数

我有一个相当大的data.table(15M行,15列),我想要计算每行的中位数.我可以这样做

apply(DT, 1, median)  # DT is my data.table
Run Code Online (Sandbox Code Playgroud)

但这很慢.是否有更快,更适合数据的替代方案?

作为一个小工作的例子,如果我有

DT = data.table(a = c(1, 2, 4), b = c(6, 4, 7), 
                c = c(3, 9, 9), d = c(18, 1, -5))
#    a b c  d
# 1: 1 6 3 18
# 2: 2 4 9  1
# 3: 4 7 9 -5
Run Code Online (Sandbox Code Playgroud)

计算行中位数的最有效方法是什么?

apply(DT, 1, median)
# [1] 4.5 3.0 5.5
Run Code Online (Sandbox Code Playgroud)

r data.table

3
推荐指数
1
解决办法
976
查看次数

使用matrixStats::rowMedians 查找每行的中位数

df我正在尝试使用rowMediansfrom包计算数据框的行中位数matrixStats

Abundance Sample1 Sample2 Sample3 Sample4 Sample5 Sample6 Sample7
Species1   2        4       0       0       0       6       0
Species2   3        5       6       4       0       0       0
Species3   3        7       2       5       8       0       0
Species4   0        0       3       8       0       0       8
Species5   7        5       6       0       0       4       4
Species6   4        2       3       0       0       2       1
Run Code Online (Sandbox Code Playgroud)

我想计算每行的中位数并将它们附加到新列中。我收到一个错误

参数“x”必须是向量或矩阵

所以我尝试将我的转换df为矩阵。该str函数显示该物种的每个值都是数字,所以我尝试:

library(matrixStats)
matrix(df, rownames.force = NA)
rowMedians(df)
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到同样的错误。任何帮助表示赞赏。

r matrix median dataframe

2
推荐指数
1
解决办法
1034
查看次数

如何向行添加中值?

我有一个包含 53 列(ID 列加 52 个数值)的数据框(数据)。我可以添加一个具有以下平均值的列:

data$mean <- rowMeans(data[,2:51],na.rm = TRUE) # add mean of rows
Run Code Online (Sandbox Code Playgroud)

但是,我不能用以下方法对中位数做同样的事情:

data$medians <- rowMedians(month.sum[,2:51],na.rm = TRUE) # add medians of rows
Run Code Online (Sandbox Code Playgroud)

我安装了包含的包matrixStatsrowMedians,但它对我不起作用。

r median

1
推荐指数
1
解决办法
4009
查看次数

标签 统计

r ×4

median ×2

data.table ×1

dataframe ×1

matrix ×1