【发布时间】:2022-12-05 07:14:10
【问题描述】:
我有一个类似于下面的数据集,我正在向您展示
| gene_name | gene_length | value1 | value2 | value3 |
|---|---|---|---|---|
| NameA | 1070 | 100 | 300 | 600 |
| NameB | 110 | 200 | 600 | 1200 |
我的目标是使用除法结果创建新列的列值 1、值 2、值 3... 中的值...值-n由gene_length 列中的值.
是这样的:
| gene_name | gene_length | value1 | value2 | value3 | value1_result | value2_result | value3_result |
|---|---|---|---|---|---|---|---|
| NameA | 1070 | 100 | 300 | 600 | 0.0934 | 0.2803 | 0.5607 |
| NameB | 110 | 200 | 600 | 1200 | 1.8181 | 5.4545 | 10.9090 |
我可以用很少的列和行在 R 中应用几个 mutate 函数,但问题是我的数据集有超过 5 万行和 21 列。
如何使用 tidyverse 更有效地完成这项任务?
我读过我可以将 mutate 函数与 across 函数结合使用,但是我无法让它们一起工作。
desired_df <- df %>%
mutate(across(.cols = 3:21, # 21 because of the 21 columns i have in my dataframe
# I need to specify a function to perform the division in the columns i want
# but i dont know how
.names = '{col}_value')) # names of new columns
【问题讨论】: