簡體   English   中英

將數據幀的每一列與 R 中該數據幀的另一列相乘

[英]multiply every column of a dataframe with another column of that dataframe in R

我想將數據框中一行的所有值與行尾的一列相乘。

例如,將所有行乘以列 mult(在我的情況下有 40 行,因此列選擇的自動解決方案會很好):

ID val1 val2 val3 val4 ... 新瓦爾1 新瓦爾2 ...
01 1 2 3 4 3 3 3 6 ...
02 1 2 3 4 6 6 6 12 ...

非常感謝您提前和最好的問候! :)

data.table方法

library(data.table)
DT <- fread("id val1 val2 val3 val4 mult
01 1 2 3 4 3
02 1 2 3 4 6")

#cols to multiply
multCols <- names(DT)[grepl("^val", names(DT))]
#create new multiplied
DT[, paste0("new",multCols) := lapply(.SD, `*`, mult), .SDcols = multCols][]
#    id val1 val2 val3 val4 mult newval1 newval2 newval3 newval4
# 1:  1    1    2    3    4    3       3       6       9      12
# 2:  2    1    2    3    4    6       6      12      18      24

across dplyr中,您可以使用 cross :

library(dplyr)
your_df %>% 
   mutate(across(starts_with("val"), ~ .x * mult, .names = "new{.col}"))

#  id val1 val2 val3 val4 mult newval1 newval2 newval3 newval4
#1  1    1    2    3    4    3       3       6       9      12
#2  2    1    2    3    4    6       6      12      18      24

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM