r - 当行位置是动态的时,将变量分配给数据框中的特定单元格

标签 r dataframe dplyr

这里的目标是自动化数据处理管道,我可以在其中读取 .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/

相关文章:

r - 在 ldply() 内使用 summarise() 函数的 summarise(glm-object)

python - 将文本解析到它自己的字段中,进行计数,并将选择的字段 reshape 为宽格式

r - 在 R 中创建条件计数变量

r - 按财政季度计算 R 中两个日期之间事件的记录

R 将行汇总为一行(连续变量和因子变量)

r - 在 R 中绑定(bind)外部变量

r - 使用 DBSCAN 对 GPS 数据进行聚类,但聚类没有意义(就大小而言)

r - 使用 for 循环动态调用 Shiny 模块多次

python - 确定分组数据框中值的变化

python - 如何根据pandas中的某些条件创建row_number