通过将数据集中的所有变量保留在r中来计算均值

amisos55

我试图通过将所有变量保留在dplyr中的最终数据集中来计算时间平均值这是我的样本数据集的样子:

library(dplyr)
id <-     c(1,1,1,1, 2,2,2,2, 3,3,3,3, 4,4,4,4)
gender <- c(1,1,1,1, 2,2,2,2, 2,2,2,2, 1,1,1,1)
item.id <-c(1,1,1,2, 1,1,2,2, 1,2,3,4, 1,2,2,3)
sequence<-c(1,2,3,1, 1,2,1,2, 1,1,1,1, 1,1,2,1)
time <-   c(5,6,7,1, 2,3,4,9, 1,2,3,9, 5,6,7,8)
data <- data.frame(id, gender, item.id, sequence, time)
> data
   id gender item.id sequence time
1   1      1       1        1    5
2   1      1       1        2    6
3   1      1       1        3    7
4   1      1       2        1    1
5   2      2       1        1    2
6   2      2       1        2    3
7   2      2       2        1    4
8   2      2       2        2    9
9   3      2       1        1    1
10  3      2       2        1    2
11  3      2       3        1    3
12  3      2       4        1    9
13  4      1       1        1    5
14  4      1       2        1    6
15  4      1       2        2    7
16  4      1       3        1    8

id对于学生证,gender对于性别,item.id对于学生要回答的问题ID,sequence是解决问题的尝试序列号,因为学生可能会回到问题并再次回答,并且time是每次尝试所花费的时间。

在计算时间平均值时,我需要遵循三个步骤:

(a)学生对每个问题进行多次试验。我需要为每个具有多次试验的项目计算时间平均值。

(b)然后计算每个时间的总时间平均值id例如,对于id=1,我有两个项目,第一个项目有3个试验,第二个项目有1个试验。首先,我需要聚集通过的第一个项目的时间(5+6+7)/3=6,所以id=1有物品1时间6和ITEM2时间1其次,以61和计算平均为这个学生(6+1)/2=3.5

(c) 最后,我想将所有变量保留在数据集中。

 data <- data %>%
          group_by(id) %>%
          select(id, gender, item.id, sequence, time) %>%
          summarize(mean.time = mean(time))

我明白了这一点,但显然,这只是在不考虑每次试验的均值范围内汇总均值,而且也没有保留所有变量:

> data
# A tibble: 4 x 2
     id mean.time
  <dbl>     <dbl>
1     1      4.75
2     2      4.5 
3     3      3.75
4     4      6.5 

我以为select()会保留所有变量。

最终数据集应如下所示:

> data
   id gender item.id sequence time  mean.time
1   1      1       1        1    5    3.5
2   1      1       1        2    6    3.5
3   1      1       1        3    7    3.5
4   1      1       2        1    1    3.5
5   2      2       1        1    2    4.5
6   2      2       1        2    3    4.5
7   2      2       2        1    4    4.5
8   2      2       2        2    5    4.5
9   3      2       1        1    1    3.75
10  3      2       2        1    2    3.75
11  3      2       3        1    3    3.75
12  3      2       4        1    9    3.75
13  4      1       1        1    5    6.5
14  4      1       2        1    6    6.5
15  4      1       2        2    7    6.5
16  4      1       3        1    8    6.5

我使用过dplyr但打开了其他解决方案。提前致谢!

阿克伦

我们可以使用mutate而不是summarise作为summarise返回值(每组1行)的汇总输出,而mutate在数据集中创建新列

...
  %>% 
      mutate(mean.time = mean(time))

如果凌晨想要得到meanmean由“身份证”,那么第一组,“item.id”,得到mean,然后通过“ID”进行分组,得到meanunique元素

data %>%
   group_by(id, item.id) %>% 
   mutate(mean.time = mean(time)) %>% 
   group_by(id) %>% 
   mutate(mean.time = mean(unique(mean.time)))
# A tibble: 16 x 6
# Groups:   id [4]
#      id gender item.id sequence  time mean.time
#   <dbl>  <dbl>   <dbl>    <dbl> <dbl>     <dbl>
# 1     1      1       1        1     5      3.5 
# 2     1      1       1        2     6      3.5 
# 3     1      1       1        3     7      3.5 
# 4     1      1       2        1     1      3.5 
# 5     2      2       1        1     2      4.5 
# 6     2      2       1        2     3      4.5 
# 7     2      2       2        1     4      4.5 
# 8     2      2       2        2     9      4.5 
# 9     3      2       1        1     1      3.75
#10     3      2       2        1     2      3.75
#11     3      2       3        1     3      3.75
#12     3      2       4        1     9      3.75
#13     4      1       1        1     5      6.5 
#14     4      1       2        1     6      6.5 
#15     4      1       2        2     7      6.5 
#16     4      1       3        1     8      6.5 

或代替创建第二个分组,我们可以执行一个操作match以获取“ item.id”的第一个位置,提取“ mean.time”并获取mean

data %>%
   group_by(id, item.id) %>% 
   mutate(mean.time = mean(time), 
          mean.time = mean(mean.time[match(unique(item.id), item.id)]))

或使用summarise然后做一个left_join

data %>%
  group_by(id, item.id) %>%
  summarise(mean.time = mean(time)) %>%
  group_by(id) %>%
  summarise(mean.time = mean(mean.time)) %>%
  right_join(data)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将具有某些值的行保留在数据框中,并删除所有其他行[R]

来自分类Dev

将数据保留在静态变量中是不好的做法吗?

来自分类Dev

将所有列保留在MIN / MAX查询中,但返回1个结果

来自分类Dev

Java中的默认类加载器是否将所有内容保留在内存中或保留在文件系统中?

来自分类Dev

将变量类型保留在json.dump中

来自分类Dev

如何使用R将所有转义字符保留在SQL字符串中以查询POSTGRES DB?

来自分类Dev

将所有字段保留在MySQL中的简便方法?

来自分类Dev

将帐户信息保留在android studio中的所有活动中

来自分类Dev

从字符串中删除URL,但通过PHP将数据保留在其中

来自分类Dev

将所有命令保留在bash历史记录中?

来自分类Dev

Python列表,将所有值保留在列表的所有子列表中

来自分类Dev

将排除的变量保留在summarise_at中

来自分类Dev

使用Powershell-通过将现有子节点保留在现有xml文件中来添加父节点。

来自分类Dev

如何将所选数据保留在表中?

来自分类Dev

在DF中对数据进行分组,但将所有列保留在Python中

来自分类Dev

在图例中将所有中断保留在图例中

来自分类Dev

将方法添加的所有值保留在单独的变量中

来自分类Dev

如何使用flexbox将所有元素保留在容器中?

来自分类Dev

将所有命令保留在bash历史记录中?

来自分类Dev

OpsCenter社区,将数据保留在不同的群集中

来自分类Dev

如何将所有JQuery保留在外部脚本文件中?

来自分类Dev

将所有内容保留在Excel文件中的引号之间

来自分类Dev

将所有索引保留在多级熊猫groupby中

来自分类Dev

使用.NET MVC中的Response.Filter将所有JavaScript保留在页面底部

来自分类Dev

将grep输出保留在shell变量中

来自分类Dev

将具有特定字符串值的行数据保留在R中

来自分类Dev

按另一个因素的级别聚合值,但将所有行保留在 R 中

来自分类Dev

将所有数据保留在数据框中,但 2 列中的特定行除外

来自分类Dev

加入两个数据框并将所有列保留在熊猫中

Related 相关文章

  1. 1

    将具有某些值的行保留在数据框中,并删除所有其他行[R]

  2. 2

    将数据保留在静态变量中是不好的做法吗?

  3. 3

    将所有列保留在MIN / MAX查询中,但返回1个结果

  4. 4

    Java中的默认类加载器是否将所有内容保留在内存中或保留在文件系统中?

  5. 5

    将变量类型保留在json.dump中

  6. 6

    如何使用R将所有转义字符保留在SQL字符串中以查询POSTGRES DB?

  7. 7

    将所有字段保留在MySQL中的简便方法?

  8. 8

    将帐户信息保留在android studio中的所有活动中

  9. 9

    从字符串中删除URL,但通过PHP将数据保留在其中

  10. 10

    将所有命令保留在bash历史记录中?

  11. 11

    Python列表,将所有值保留在列表的所有子列表中

  12. 12

    将排除的变量保留在summarise_at中

  13. 13

    使用Powershell-通过将现有子节点保留在现有xml文件中来添加父节点。

  14. 14

    如何将所选数据保留在表中?

  15. 15

    在DF中对数据进行分组,但将所有列保留在Python中

  16. 16

    在图例中将所有中断保留在图例中

  17. 17

    将方法添加的所有值保留在单独的变量中

  18. 18

    如何使用flexbox将所有元素保留在容器中?

  19. 19

    将所有命令保留在bash历史记录中?

  20. 20

    OpsCenter社区,将数据保留在不同的群集中

  21. 21

    如何将所有JQuery保留在外部脚本文件中?

  22. 22

    将所有内容保留在Excel文件中的引号之间

  23. 23

    将所有索引保留在多级熊猫groupby中

  24. 24

    使用.NET MVC中的Response.Filter将所有JavaScript保留在页面底部

  25. 25

    将grep输出保留在shell变量中

  26. 26

    将具有特定字符串值的行数据保留在R中

  27. 27

    按另一个因素的级别聚合值,但将所有行保留在 R 中

  28. 28

    将所有数据保留在数据框中,但 2 列中的特定行除外

  29. 29

    加入两个数据框并将所有列保留在熊猫中

热门标签

归档