【问题标题】:Subtract / add a vector with many other rows of a data frame用数据框的许多其他行减去/添加向量
【发布时间】:2022-10-07 19:29:51
【问题描述】:

不幸的是,我面临的问题是我的 for 循环或扫描命令不起作用。我有一个从大型 Excel 电子表格 (10000 x 26) 读取的数据集 (df1) 和另一个 Excel 电子表格 (1 x 26) 的另一个数据集 (df2)。我想用df2减去/添加df1的每一行。不幸的是,我的代码不起作用。 为了更好地展示它,我在下面添加了一张我正在计划的图片。 enter image description here

【问题讨论】:

    标签: python r for-loop row


    【解决方案1】:

    我将假设这两个数据框具有相同的列标题,因为它们具有相同的列数。如果这个假设是错误的,你可以纠正我。我会绘制出列名,然后从 df2 中的所有值中减去 df2 中列的值。

    library(tidyverse)
    
    #example data
    df1 <- mtcars
    df2 <- mtcars[1,] |>
      mutate(across(everything(), ~ . + runif(n = 1, min = -10, max = 10)))
    
    #solution
    colnames(df1) |>
      map_dfc((x){
        
        val <- pull(df2, !!sym(x))
        
        df1 |>
          select(!!sym(x)) |>
          mutate(!!quo(!!sym(x)) := !!sym(x) - val) |>
          as_tibble()
      })
    #> # A tibble: 32 x 11
    #>       mpg   cyl   disp     hp  drat    wt  qsec    vs    am  gear  carb
    #>     <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
    #>  1  -5.87  7.11  -8.99  -2.41  8.10  4.92 0.908 -2.14  2.85 -1.07  8.76
    #>  2  -5.87  7.11  -8.99  -2.41  8.10  5.17 1.47  -2.14  2.85 -1.07  8.76
    #>  3  -4.07  5.11 -61.0  -19.4   8.05  4.62 3.06  -1.14  2.85 -1.07  5.76
    #>  4  -5.47  7.11  89.0   -2.41  7.28  5.51 3.89  -1.14  1.85 -2.07  5.76
    #>  5  -8.17  9.11 191.    62.6   7.35  5.74 1.47  -2.14  1.85 -2.07  6.76
    #>  6  -8.77  7.11  56.0   -7.41  6.96  5.76 4.67  -1.14  1.85 -2.07  5.76
    #>  7 -12.6   9.11 191.   133.    7.41  5.87 0.288 -2.14  1.85 -2.07  8.76
    #>  8  -2.47  5.11 -22.3  -50.4   7.89  5.49 4.45  -1.14  1.85 -1.07  6.76
    #>  9  -4.07  5.11 -28.2  -17.4   8.12  5.45 7.35  -1.14  1.85 -1.07  6.76
    #> 10  -7.67  7.11  -1.39  10.6   8.12  5.74 2.75  -1.14  1.85 -1.07  8.76
    #> # ... with 22 more rows
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多