我知道这个问题可能已经在其他地方得到了解答,并且如果是这样的话,重复道歉,但我还没有找到可行的答案。
我有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
}
我们得到'OD'的第一个元素并从列中减去
library(dplyr)
df1 %>%
mutate(OD_adjusted = OD- OD[1])
或者使用base R
df1$OD_adjusted <- with(df1, OD - OD[1])