如何用r中数据集的多列值除以单列值

  • 本文关键字:单列值 何用 数据集 r tidyverse
  • 更新时间 :
  • 英文 :


我有一个类似于下面展示的数据集

<表类> gene_name gene_length value1 value2 value3 tbody><<tr>对1070100300600NameB1102006001200

循环across'value'列,创建lambda函数(~)将列(.x)除以'gene_length',并修改.names_result作为后缀创建新列

library(dplyr)
desired_df <- df %>% 
mutate(across(.cols = starts_with("value"), ~ .x/gene_length,
.names = '{.col}_result')) 

与产出

> desired_df
gene_name gene_length value1 value2 value3 value1_result value2_result value3_result
1     NameA        1070    100    300    600    0.09345794     0.2803738     0.5607477
2     NameB         110    200    600   1200    1.81818182     5.4545455    10.9090909

或使用data.table

library(data.table)
nm1 <- grep("value", names(df), value = TRUE)
setDT(df)[, paste0(nm1, "_result") := lapply(.SD, (x) 
x/gene_length), .SDcols = nm1]

数据
df <- structure(list(gene_name = c("NameA", "NameB"), gene_length = c(1070L, 
110L), value1 = c(100L, 200L), value2 = c(300L, 600L), value3 = c(600L, 
1200L)), class = "data.frame", row.names = c(NA, -2L))

最新更新