R通过在新列的数据框中的所有值中添加/减去此值来标识数据框中的第一个值并创建新变量

问题描述 投票:0回答:1

我知道这个问题可能已经在其他地方得到了解答,并且如果是这样的话,重复道歉,但我还没有找到可行的答案。

我有17个科目,每个科目有两个变量如下:

Time (s)    OD
130        41.48
130.5      41.41
131        39.6
131.5      39.18
132        39.41
132.5      37.91
133        37.95
133.5      37.15
134        35.5
134.5      36.01
135        35.01

我希望R识别我的数据帧的第2列(OD)中的第一个值,并通过从第2列中的所有值添加或减去(取决于第一个值是+ ive还是-ive)来创建新列(OD_adjusted),以便它看起来像这样:

    Time (s)    OD      OD_adjusted 
130            41.48     0
130.5          41.41    -0.07
131            39.6     -1.88
131.5          39.18    -2.3
132            39.41    -2.07
132.5          37.91    -3.57
133            37.95    -3.53
133.5          37.15    -4.33
134            35.5     -5.98
134.5          36.01    -5.47
135            35.01    -6.47

第2列中的第一个值是41.48,因此我想从第2列中的所有数据点中减去此值以创建新的第三列(OD_adjusted)。

我可以使用OD_adjusted <- ((df$OD) - 41.48)但是,我想使用函数自动化该过程,这就是我被困的地方:

AUC_OD <- function(df){

return_value_1 = df %>%
  arrange(OD) %>%
  filter(OD [1,2) %>%
  slice_(1)
colnames(return_value_1)[3] <- "OD_adjusted"


if (nrow(return_value_1) > 0 ) { subtract 
   (return_value_1 [1,2] #into new row

     else add
     (return_value_1 [1,2] #into new row

}
r add identity subtraction
1个回答
2
投票

我们得到'OD'的第一个元素并从列中减去

library(dplyr)
df1 %>%
   mutate(OD_adjusted = OD- OD[1])

或者使用base R

df1$OD_adjusted <- with(df1, OD - OD[1])
© www.soinside.com 2019 - 2024. All rights reserved.