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

使用mutate_each的数学运算

毋宪
2023-03-14

我想在dplyr中构建mutate_each/summarise_each:如何选择某些列并为变异列命名?线程。它讨论了将mutate应用于多个列。然而,我知道我们可以使用函数,如sum等,但我不知道如何应用数学运算,如加法、乘法、除法和减法。

以下是我的数据:

dput(DF)
structure(list(FY = c(2015, 2016, 2017, 2030, 2015, 2016, 2017, 
2030, 2015, 2016, 2017, 2030, 2015, 2016, 2017, 2030, 2015, 2030
), Value = c(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
19, 20, NA, NA)), .Names = c("FY", "Value"), row.names = c(NA, 
18L), class = "data.frame")
DF<-DF %>% 
  dplyr::group_by(FY) %>%
  dplyr::summarise(Numbers = sum(Value,na.rm = TRUE)) %>%
  spread(FY,Numbers)

DF$`2016`<-DF$`2016` + DF$`2030`/3
DF$`2017`<-DF$`2017` + DF$`2030`/3
DF$`2015`<-DF$`2015` + DF$`2030`/3
DF$`2030`<-NULL

DF <- DF %>%
gather(FY,Values,`2015`:`2017`)
   DF$`2016`<-DF$`2016` + DF$`2030`/3
    DF$`2017`<-DF$`2017` + DF$`2030`/3
    DF$`2015`<-DF$`2015` + DF$`2030`/3

我怎样做才能最大限度地减少重复?

应用上述操作后的预期输出:

dput(DF)
structure(list(FY = c("2015", "2016", "2017"), Values = c(62.6666666666667, 
66.6666666666667, 70.6666666666667)), row.names = c(NA, -3L), .Names = c("FY", 
"Values"), class = c("tbl_df", "tbl", "data.frame"))

共有1个答案

艾善
2023-03-14

使用dplyr,我们可以group_byfy。获取每个组的sum,并将FY2030的1/3部分添加到所有sum中。

library(dplyr)
DF %>%
   group_by(FY) %>%
   summarise(Sum = sum(Value, na.rm = TRUE)) %>%
   mutate(NewValue = Sum + Sum[FY == '2030']/3) %>%
   filter(FY != 2030)

#    FY   Sum  NewValue
#  <dbl> <dbl>    <dbl>
#1  2015    44 62.66667
#2  2016    48 66.66667
#3  2017    52 70.66667
 类似资料:
  • 是否有一种方法可以更改“starts_with”命令来选择所有以大写字母和句号开头的列?我尝试使用诸如“[A-Z]”之类的修改。都没有成功。 提前致谢

  • 1.4.1常量和变量类型 a) 常量 常量是指其值始终不变的一些量。整型、实型、双精度和复型常量是算数型常量,也为常数。 整型:默认值为4字节(其它为1,2,8字节,Compaq Visual Fortran允许在Alpha机上使用8字节整数)。4字节32位(bit)中用一位存放数值的符号,其余为数本身(用二进制表示)。第1位为O表示“正”,“1”表示“负”。由于用有限的内存单元存储一个整数,因此

  • 问题 你写的最新的网络认证方案代码遇到了一个难题,并且你唯一的解决办法就是使用复数空间。 再或者是你仅仅需要使用复数来执行一些计算操作。 解决方案 复数可以用使用函数 complex(real, imag) 或者是带有后缀j的浮点数来指定。比如: >>> a = complex(2, 4) >>> b = 3 - 5j >>> a (2+4j) >>> b (3-5j) >>> 对应的实部、虚部和

  • 本文向大家介绍Python中的数学运算操作符使用进阶,包括了Python中的数学运算操作符使用进阶的使用技巧和注意事项,需要的朋友参考一下 Python中对象的行为是由它的类型 (Type) 决定的。所谓类型就是支持某些特定的操作。数字对象在任何编程语言中都是基础元素,支持加、减、乘、除等数学操作。 Python的数字对象有整数和浮点数,支持各种数学操作,比如+, -,*, /等。 没有这些操作符

  • Math can be applied directly to variable values. 数学运算可以直接应用到变量 Example 3-5. math examples 例 3-5.数学运算的例子 {$foo+1} {$foo*$bar} {* some more complicated examples *} {$foo->bar-$bar[1]*$baz->foo-

  • 本文向大家介绍Bash 使用DC的数学,包括了Bash 使用DC的数学的使用技巧和注意事项,需要的朋友参考一下 示例 dc 是Unix上最古老的语言之一。 它使用的是反向抛光符号,这意味着您首先要堆叠数字,然后是运算。例如1+1写为1 1+。 要从堆栈顶部打印元素,请使用命令 p 您可以多次打印顶部元素 对于负数,请使用_前缀 您也可以使用大写字母fromA to F作为介于10 and 15和之