[英]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.