这里的目标是自动化数据处理管道,我可以在其中读取 .csv 文件并运行脚本并输出处理后的文件,为数据绘图做好准备。我所做的只是对几列应用一些操作,但自动化一个步骤对我来说还不清楚:
我需要将一列中的值除以另一列中的值,但在除法之前我需要从特定单元格中减去一个值。但是,在每个不同的 .csv 中,特定的单元格位置都会发生变化,因此我不能简单地将列/行单元格提取为变量并使用它。作为示例数据框:
df<-
sampleid t1 t2
a1 4 15
a2 3 18
a3 7 30
b1 6 17
blank 1 5
函数将是
df <- df %>% mutate(ri=(t1-1)/(t2-1))
其中 t1 和 t2 减去“1”来自“空白”行“t1”值。我想创建一个该单元格值的变量,以代入该方程式(有时它不是 1)。 csv/data frame 中的特定行会根据总样本数发生变化,所以我不能每次都选择一个固定的单元格。
理想情况下应该是
df <- df %>% mutate(ri=(t1-x)/(t2-x))
其中“x”被分配给数据框中的空白 t1 值。
有什么好方法可以做到这一点?谢谢。
最佳答案
您可以将变量 x 添加为一列,然后使用您的公式(然后再次删除 x):
library(tidyverse)
df <- read.table(text = "sampleid t1 t2
a1 4 15
a2 3 18
a3 7 30
b1 6 17
blank 1 5", header = TRUE, stringsAsFactors = FALSE)
df %>%
mutate(x = df %>%
filter(sampleid == "blank") %>%
pull(t1)) %>%
mutate(ri = (t1 - x) / (t2 - x)) %>%
select(-x)
# sampleid t1 t2 ri
# 1 a1 4 1 0.2142857
# 2 a2 3 1 0.1176471
# 3 a3 7 1 0.2068966
# 4 b1 6 1 0.3125000
# 5 blank 1 1 0.0000000
关于r - 当行位置是动态的时,将变量分配给数据框中的特定单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60886246/