通过2个定义的参数用数据填充列

时间:2019-04-29 11:57:11

标签: r

我有一个示例工作数据集(称为df),已在R中添加了列,我想根据非常具体的条件用数据填充这些列。

我在带有8个不同变量的实验室中运行样品,并且每次对每个变量运行两次(每个样品列)。据此,我计算出一个平均结果,称为Cq_mean

我在下面的R中添加的列指的是每个变量名。

我想根据两个条件,用positivenegative填充这些列:

  1. 变量

  2. Cq_mean

如下面的代码所示,我能够基于positive创建negativeCq_mean结果,但是在逻辑上将其遍历整个数据集,而不考虑变量,并用我想保留为空的数据填充单元格。我不确定如何要求R同时考虑这两个条件。

肯定:Cq_mean <= 37.1 否定:Cq_mean >= 37

有用的信息:

sample下,数据始终用短划线(-)分隔,样品号在前面,变量名在后面。我需要以某种方式隔离破折号之后的内容。

请参考我想要的结果表以直观显示我的目标。

df <- read.table("https://pastebin.com/raw/ZPJS9Vjg", header=T,sep="")

为变量添加列名

df$TypA <- ""
df$TypB <- ""
df$TypC <- ""
df$RP49 <- ""
df$RPS5 <- ""
df$H20 <- ""
df$F1409B <-""
df$F1430A <- ""

用数据填充列

df$TypA <- ifelse(df$Cq_mean>=37.1,"negative", 'positive')
df$TypB <- ifelse(df$Cq_mean>=37.1,"negative", 'positive')

并继续浏览每个变量

所需的结果(整个数据集的子集在excel中手动完成):

desired_outcome <- read.table("https://pastebin.com/raw/P3PPbiwr", header = T, sep="\t")

1 个答案:

答案 0 :(得分:1)

类似这样的方法可以解决问题:

df$TypA[grepl('TypA', df$sample1)] <- ifelse(df$Cq_mean[grepl('TypA', df$sample1)] >= 37.1, 
                                            'neg', 'pos')

您需要在每个所需的新列中执行一次。

grepl仅过滤掉样本变量中您选择的字符串(此处为TypA)所在的行。