我有一个数据集,看起来像
df <- data.frame(A=rnorm(10), B=rnorm(10), C=rnorm(10), D=rnorm(10), E=rnorm(10))
我需要为每一行找到最低的四个条目,然后计算这四个条目的平均值。
我试过了
df %>% rowwise() %>% mutate(Min = min(A, B, C, D, E))
但我很难找到一个方法,为第二个最低的入口,第三个最低的入口等。
由于我有36列条目,总是需要与4个最低行条目的工作,我试图与百分位数(4/36 = 1/9 ...),但这似乎是复杂的方式做。
有没有更简单的方法让我忽略?
5条答案
按热度按时间qkf9rpyu1#
您可以使用
c_across
,对值进行排序,选择其中的前4个值,并获得它们的平均值。或者是R -
数据
zfciruhq2#
使用
Base R,
给出,
数据:
xghobddn3#
如果您首先获取长格式的数据,这类事情往往会更容易。
cl25kdpy4#
使用排序函数并将第二个最小值作为子集
如果要查找四个最小值的平均值:
zzlelutf5#
我们可以使用
pmap
来遍历行sort
vector
(c(...)
),使用head
获取前“n”个值,然后使用mean
返回,以在mutate
中创建新列“Average_4或者,使用
collapse
中的fmean/dapply
可以更快地完成此操作数据