【问题标题】:sum of all the values from that row该行中所有值的总和
【发布时间】:2020-04-16 21:22:29
【问题描述】:

如果我有一个包含如下所示列的数据集

 Col1
 1.080042
 1.083287
 1.141108
 1.191246
 1.117395

我要创建的是另一个像这样的列 Col2

 Col1        Col2
 1.080042    1.080042/(1.080042 + 1.083287 + 1.141108 + 1.191246 + 1.117395)
 1.083287    1.083287/(1.083287 + 1.141108 + 1.191246 + 1.117395) 
 1.141108    1.141108/(1.141108 + 1.191246 + 1.117395)
 1.191246    1.191246/(1.191246 + 1.117395) 
 1.117395    1.117395 /1.117395

Col2 是 Col1 值除以它下面的 Co1 值的总和。我不确定如何有效地实现这一目标。

【问题讨论】:

    标签: r sum


    【解决方案1】:

    我们可以得到'Col1'的reverse元素的累积和,得到reverse并除以'Col1'

    df1$Col2 <- df1$Col1/rev(cumsum(rev(df1$Col1)))
    df1$Col2
    #[1] 0.1924153 0.2389760 0.3307800 0.5159945 1.0000000
    

    -检查 OP 的计算

    1.080042/(1.080042 + 1.083287 + 1.141108 + 1.191246 + 1.117395)
    #[1] 0.1924153
    
    1.083287/(1.083287 + 1.141108 + 1.191246 + 1.117395) 
    #[1] 0.238976
    

    数据

    df1 <- structure(list(Col1 = c(1.080042, 1.083287, 1.141108, 1.191246, 
    1.117395)), class = "data.frame", row.names = c(NA, -5L))
    

    【讨论】:

      【解决方案2】:
      library(tidyverse) # dplyr and purrr
      
      df %>% 
        mutate(Col2 = Col1/accumulate(Col1, `+`, .dir = 'backward'))
      
      #       Col1      Col2
      # 1 1.080042 0.1924153
      # 2 1.083287 0.2389760
      # 3 1.141108 0.3307800
      # 4 1.191246 0.5159945
      # 5 1.117395 1.0000000
      

      【讨论】:

        【解决方案3】:

        cumsum@akrun 之外的另一个基本 R 解决方案

        df <- within(df,Col2 <- Col1/rev(Reduce(`+`,rev(Col1),accumulate = TRUE)))
        

        这样

        > df
              Col1      Col2
        1 1.080042 0.1924153
        2 1.083287 0.2389760
        3 1.141108 0.3307800
        4 1.191246 0.5159945
        5 1.117395 1.0000000
        

        【讨论】:

          猜你喜欢
          • 2023-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-02
          • 1970-01-01
          • 2015-04-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多