R:如何取每n行的min和max或其他函数

标签 r dataframe max min

我有一个数据框,我将其中一个变量放入一个向量中。

从这个向量中,我想计算每 5 个值 meanminmax 值。

我已经设法用这种方式计算出均值:

means <- colMeans(matrix(df$values, nrow=5))

我知道我可以像这样计算最小值和最大值:

max <- max(df$values[1:5])
min <- min(df$values[1:5])

如何为 五个值重复此操作?

编辑:

此外,如何从每个 n 行的 1 样本 t 检验中获取统计数据和 p 值?

最佳答案

1) tapply g下面是一个分组变量,由fives ones,fives twos等等组成。 range 提供从 tapply 输出列表的最小值和最大值,然后 simplify2array 将其缩减为数组。如果您想要列表输出,请省略 simlify2arrayout[1, ] 是最小值,out[2, ] 是最大值。

values <- 1:100 # test input

n <- length(values)
g <- rep(1:n, each = 5, length = n)
out <- simplify2array(tapply(values, g, range))

给予:

> out
     1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19  20
[1,] 1  6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91  96
[2,] 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100

2) 聚合 这也可行:

ag <- aggregate(values, list(g = g), range)

给出此 data.frame,其中第一列是 g,第二列是 (1) 中矩阵的转置。这里 ag[[2]][, 1] 是最小值,ag[[2]][, 2] 是最大值。如果你想扁平化 ag 试试 do.call(data.frame, ag)do.call(cbind, ag) 取决于是否你想要一个 3 列数据框或矩阵。

> ag
    g x.1 x.2
1   1   1   5
2   2   6  10
3   3  11  15
4   4  16  20
5   5  21  25
6   6  26  30
7   7  31  35
8   8  36  40
9   9  41  45
10 10  46  50
11 11  51  55
12 12  56  60
13 13  61  65
14 14  66  70
15 15  71  75
16 16  76  80
17 17  81  85
18 18  86  90
19 19  91  95
20 20  96 100

关于R:如何取每n行的min和max或其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714557/

相关文章:

r - 计算非线性最小二乘拟合的R ^ 2

python - 函数循环多个数据帧以创建新的分类数据列

python - 数据帧的平均值

SQL Server : IF null Replace with other column data

mysql left join 所有行的最大值

c# - 用于找峰的数学库

R 距离 : calculating distance of few to many

python - R中python keras和keras之间的不同精度

R中将数组随机划分为相等的子(两个以上)数组

python - python数据帧的条件求和