当前位置: 首页 > 知识库问答 >
问题:

使用 dplyr 计算某些列的平均值::突变

曾皓
2023-03-14

我想使用dplyr::mutate计算一些列的平均值。

library(dplyr)
test <- data.frame(replicate(12, sample(1:12, 12, rep = T))) %>% 
`colnames<-`(seq(1:12) %>% paste("BL", ., sep = ""))

我想包含来计算平均值的列只有BL1到BL9,所以我这样做了。

test_again <- test %>% 
rowwise() %>%
mutate(ave = mean(c(seq(1:9) %>% paste("BL", ., sep = ""))))

这行不通。我注意到如果我一个接一个的列,它会工作

test_againAndAgain <- test %>%
rowwise() %>%
mutate(ave = mean(c(BL1, BL2, BL3, BL4, BL5, BL6, BL7, BL8, BL9)))

我怀疑这是因为我给出的是字符串而不是“列”。

有人能解释这种行为吗?对此最好的解决办法是什么?

共有2个答案

桓瀚
2023-03-14

或者另一个选项是pmapmean

library(tidyverse)
test %>% 
      mutate(ave =  select(., BL1:BL9) %>% 
                         pmap(~ mean(c(...))))
# BL1 BL2 BL3 BL4 BL5 BL6 BL7 BL8 BL9 BL10 BL11 BL12      ave
#1    5  12   8   5   3  11   7   1   8    1   11   12 6.666667
#2   11   5   5   5   2  10  12   6   6    2    7    5 6.888889
#3    8  11   9   6  10   5   8   8   2    3    6   12 7.444444
#4    2   7   7  12   3   1   1  10   7    4   11   12 5.555556
#5    8   4  12  12   9  12   9   3   5    1   10   12 8.222222
#6   11  11  11  12   3  12   5   8  12    8    2    7 9.444444
#7    2   6  11   5   8   5   5   8   8    4   11   12 6.444444
#8   10   3   9   9   8  12   9  11   8    1   12   11 8.777778
#9   12   3   7   2   3  10  11   9   1    8    9   12 6.444444
#10   1   7  12   9   8   2  11  11   7    2    2    5 7.555556
#11   9  12   2   9   2   6  10   5  10    6    7    4 7.222222
#12  11   6   9   1   4   4   8   8   2    9    3    8 5.888889

注:由于未设置<code>集,因此值不同。种子

籍星汉
2023-03-14

您可以使用行含义选择(., BL1:BL9);这里选择(., BL1:BL9) 选择从 BL1BL9 的列,行计算行平均值;您不能直接在 mutate 中将字符向量用作列,这将按原样而不是列进行处理:

test %>% mutate(ave = rowMeans(select(., BL1:BL9)))

#   BL1 BL2 BL3 BL4 BL5 BL6 BL7 BL8 BL9 BL10 BL11 BL12      ave
#1    5  11   1   1  12   5  10  12   6   11   12    9 7.000000
#2    1  10   5  11   7   6   5   9   9    1    8    4 7.000000
#3    8  10   1   2   7  12   5   9   5    3    3   11 6.555556
#4    5   2   5   4   9   5   5   3   5    2    8    1 4.777778
#5    9   1   1  10   3   5   1   9   9    6    3   12 5.333333
#6    9   7   9   6   3   2   5   4   9    5    1    2 6.000000
#7    3   3   1   9   7   8   7   9   9   11   12    9 6.222222
#8   12   9   3   3   9  11   4   2   5   12   12   12 6.444444
#9    1   7   7  12   6   6   5   3  10   12    5   10 6.333333
#10  12   7   7   1   2   8   5   8  11    9    1    5 6.777778
#11   9   1   5   8  12   6   6  11   3   12    3    9 6.777778
#12   5   6   1  11  10  12   6   7   8    7    8    2 7.333333
 类似资料:
  • 问题内容: 我有一个表,其中包含一列要从中提取信息的JSON数据。具体来说,我只想获取平均值。 我所拥有的例子: 我想要的例子: 关于如何使该查询正常工作的任何建议? 问题答案: 您的json数组被弄乱了,就像@poszcommented一样。必须是: 您的查询也以多种方式扭曲。在第 9.3 页中将像这样工作: SQL提琴。 在即将到来的pg 9.4中, 我们可以使用新的来简化操作(转换中也不太容

  • 问题内容: 编辑:我已经写了平均的代码,但我不知道如何使它也使用从我的args.length而不是数组的整数 我需要编写一个Java程序,该程序可以计算:1.读入的整数数2.平均值-不必是整数! 注意!我不想从数组中计算平均值,但是要在args中计算整数。 目前我已经写了这个: 谁能指导我正确的方向?还是举个例子,以书面形式指导我塑造这段代码? 提前致谢 问题答案: 只需对您的代码进行一些小的修改

  • 问题内容: 我正在尝试使用下面的代码来计算用户输入的一组值的平均值,并将其显示在中,但它无法正常工作。假设用户输入7、4和5,该程序在应显示5.3时显示平均值。 代码有什么问题? 问题答案: 当您拥有增强的for循环时,为什么还要对索引使用笨拙的for循环?

  • 问题内容: 任何人都知道如何计算这些列之一的平均值(在Linux上)? 例如:mean(第2栏) 问题答案: Awk: 读为: 对于每一行,将第2列添加到变量“总计”中。 在文件末尾,打印“总计”除以记录数。

  • 我试图做以下java分配和每件事似乎工作正常,除了当我把一个数字 谢谢 赋值:创建一个询问考试结果并计算成绩平均值的程序。成绩是4到10之间的浮点数。程序要求成绩,直到键入负数。如果用户给出的分数不是4到10之间的数字,则文本“无效成绩!”将在屏幕上打印,程序要求另一个分数。最后,程序在屏幕上打印输入的成绩数及其平均值,如示例打印所示。如果没有输入成绩,通知“您没有输入任何成绩。”是屏幕上唯一打印

  • 我一直在尝试编写一些代码来使用MapReduce查找数字的平均值。 我尝试使用全局计数器来实现我的目标,但是我无法在映射器的< code>map方法中设置计数器值,也无法在缩减器的< code>reduce方法中检索计数器值。 我是否必须在< code>map中使用全局计数器(例如,通过使用所提供的< code>Reporter的< code>incrCounter(key,amount))?或者