【问题标题】:How to multiply a scalar value across multiple columns in R data.frame?如何在 R data.frame 中的多列之间乘以标量值?
【发布时间】:2021-04-23 17:42:14
【问题描述】:

我有以下data.frame,我只想将numeric 列乘以scalar 值。

library(tidyverse)
library(lubridate)

set.seed(123)

D1 <- data.frame(Date = seq(as.Date("2001-01-01"), to= as.Date("2001-01-10"), by="day"),
                 A1= runif(10,1,5),
                 B2 = runif(10,3,6),
                 C9 = runif(10,2,5))

我尝试了以下方法,但它消除了 Date

D <- D1 %>% 
    select(,c(2:4))*1000

同样,这也删除了Date 列。

D <- D1 %>% 
  select_if(is.numeric)*1000

是否有任何选项可以保留Date 列并进行乘法运算?

【问题讨论】:

    标签: r dataframe tidyverse multiplication scalar


    【解决方案1】:

    我希望这是您正在寻找的:

    library(dplyr)
    
    D1 %>%
      mutate(across(where(is.numeric), ~ .x * 1000))
    
             Date       A1       B2       C9
    1  2001-01-01 3915.198 5360.962 3216.361
    2  2001-01-02 1984.007 3316.846 4443.792
    3  2001-01-03 2888.303 5870.227 4606.728
    4  2001-01-04 1955.763 5771.595 3273.241
    5  2001-01-05 1533.243 3205.139 3254.499
    6  2001-01-06 3129.899 4899.974 3063.600
    7  2001-01-07 1873.876 5107.482 4142.117
    8  2001-01-08 3807.380 5759.612 2448.172
    9  2001-01-09 1396.257 5009.001 4648.551
    10 2001-01-10 1280.629 5441.055 4858.487
    
    

    【讨论】:

      猜你喜欢
      • 2012-03-27
      • 2016-06-10
      • 1970-01-01
      • 2018-12-09
      • 2016-08-23
      • 2021-10-24
      • 2015-02-09
      • 1970-01-01
      相关资源
      最近更新 更多