首页 > 解决方案 > 如何改变数据框以执行参考组更改的功能?

问题描述

我对 R 还是很陌生,但我正在尝试在我的数据框中添加一个列,该列执行一个功能,可以控制折叠变化。这是我应用于此数据集的问题:

chemistry    rate Digital biomass[mm^3] greenness average[] Height [mm]
1   Flavone   0.001             135090.45           0.2025817    81.21167
2   Flavone    0.01             144547.00           0.2078100    82.85367
3   Flavone     0.1             145807.70           0.2043300    84.96300
4   Flavone       1             110408.18           0.1949033    81.48700
5   Flavone      10              53585.55           0.1850100    69.78533
6   Flavone Control             138598.08           0.2172325    86.05992
7      SA3F2   0.001              158966.7           0.2051417    85.33000
8      SA3F2    0.01              167762.0           0.2113683    88.58500
9      SA3F2     0.1              159897.5           0.2021017    86.60617
10     SA3F2       1              181713.5           0.1995667    85.57567
11     SA3F2      10              136530.0           0.1964467    81.84200
12     SA3F2 Control              135043.2           0.2179492    86.33429

我正在尝试为每个当前列设置折叠更改列,这些列采用每个应用速率的值(按化学分组)并将其除以对应于化学的控制值。

例如:

Digital biomass fold change 
=134090.45/53585.55
=144547.00/53585.55

等等。

我已经按化学对数据进行了分组并处理了所有平均值。我似乎无法以一种有意义的方式循环这个函数。

提前致谢。

标签: rdata-manipulation

解决方案


假设@StupidWolf 的解释是正确的,您希望使用 将"Control"每组中的行中的值划分为多列dplyr,我们可以这样做:

library(dplyr)
df %>%
  group_by(chemistry) %>%
  mutate_at(vars(`biomass[mm^3]`:`Height[mm]`), ~./.[rateDigital == 'Control'])


#   chemistry rateDigital `biomass[mm^3]` `greenness average[]` `Height[mm]`
#   <fct>     <fct>                 <dbl>                 <dbl>        <dbl>
# 1 Flavone   0.001                 0.975                 0.933        0.944
# 2 Flavone   0.01                  1.04                  0.957        0.963
# 3 Flavone   0.1                   1.05                  0.941        0.987
# 4 Flavone   1                     0.797                 0.897        0.947
# 5 Flavone   10                    0.387                 0.852        0.811
# 6 Flavone   Control               1                     1            1    
# 7 SA3F2     0.001                 1.18                  0.941        0.988
# 8 SA3F2     0.01                  1.24                  0.970        1.03 
# 9 SA3F2     0.1                   1.18                  0.927        1.00 
#10 SA3F2     1                     1.35                  0.916        0.991
#11 SA3F2     10                    1.01                  0.901        0.948
#12 SA3F2     Control               1                     1            1    

推荐阅读