Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R sum和+之间的不同输出;_R_Dplyr - Fatal编程技术网

R sum和+之间的不同输出;

R sum和+之间的不同输出;,r,dplyr,R,Dplyr,我正在处理一个问题,它基本上包括根据ID对所有行求和,并对一些特定变量求和,以获得一个整合的数据集,以便在另一项工作中输入,但sum函数存在一个问题,我希望对此进行一些解释 数据集: teste <- data.frame(ID = c(1, 1, 2, 1, 3, 3, 2), VALUE = c(10, 10, 10, 10, 10, 10, 10), MOD = c(1, 1, 1, 1, 1, 1, 1

我正在处理一个问题,它基本上包括根据ID对所有行求和,并对一些特定变量求和,以获得一个整合的数据集,以便在另一项工作中输入,但sum函数存在一个问题,我希望对此进行一些解释

数据集:

teste <- data.frame(ID = c(1, 1, 2, 1, 3, 3, 2),
                    VALUE = c(10, 10, 10, 10, 10, 10, 10),
                    MOD = c(1, 1, 1, 1, 1, 1, 1))

  ID VALUE MOD
1  1    10   1
2  1    10   1
3  2    10   1
4  1    10   1
5  3    10   1
6  3    10   1
7  2    10   1
teste%
分组依据(ID)%>%
汇总所有数据(总和,na.rm=TRUE)%>%
变异(CONS=VALUE+MOD)
#一个tibble:3x4
ID值MOD CONS
1     1    30     3    33
2     2    20     2    22
3     3    20     2    22
使用和函数:

teste %>%
    group_by(ID) %>%
    summarise_all(sum, na.rm = TRUE) %>%
    mutate(CONS = sum(VALUE, MOD))

# A tibble: 3 x 4
     ID VALUE   MOD  CONS
  <dbl> <dbl> <dbl> <dbl>
1     1    30     3    77
2     2    20     2    77
3     3    20     2    77
teste%>%
分组依据(ID)%>%
汇总所有数据(总和,na.rm=TRUE)%>%
变异(CONS=总和(值,MOD))
#一个tibble:3x4
ID值MOD CONS
1     1    30     3    77
2     2    20     2    77
3     3    20     2    77

总结所有内容
因此将其重新分组:

teste %>%
    group_by(ID) %>%
    summarise_all(sum, na.rm = TRUE) %>%
    group_by(ID) %>%   # <--------------------------
    mutate(CONS = sum(VALUE, MOD)) %>%
    ungroup
teste%>%
分组依据(ID)%>%
汇总所有数据(总和,na.rm=TRUE)%>%
分组依据(ID)%>%\
解组
给予:

# A tibble: 3 x 4
# Groups:   ID [3]
     ID VALUE   MOD  CONS
  <dbl> <dbl> <dbl> <dbl>
1     1    30     3    33
2     2    20     2    22
3     3    20     2    22
#一个tible:3 x 4
#组别:ID[3]
ID值MOD CONS
1     1    30     3    33
2     2    20     2    22
3     3    20     2    22

sum(VALUE,MOD)
是计算
VALUE
MOD
组合的总和,即(30,20,20)+(3,2,2),但我的意图是对这些变量求和,我只是没想到sum和+会有不同的方法,我不知道为什么会发生。我仍然不明白,sum不应该执行一批+操作吗?谢谢您的回答。
sum
对其所有参数中的所有元素求和,并返回标量结果。例如,使用内置的
BOD
尝试
sum(BOD)
sum(BOD,BOD)
# A tibble: 3 x 4
# Groups:   ID [3]
     ID VALUE   MOD  CONS
  <dbl> <dbl> <dbl> <dbl>
1     1    30     3    33
2     2    20     2    22
3     3    20     2    22