我有一个示例工作数据集(称为df
),已在R
中添加了列,我想根据非常具体的条件用数据填充这些列。
我在带有8个不同变量的实验室中运行样品,并且每次对每个变量运行两次(每个样品列)。据此,我计算出一个平均结果,称为Cq_mean
。
我在下面的R
中添加的列指的是每个变量名。
我想根据两个条件,用positive
或negative
填充这些列:
变量
Cq_mean
如下面的代码所示,我能够基于positive
创建negative
或Cq_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")
答案 0 :(得分:1)
类似这样的方法可以解决问题:
df$TypA[grepl('TypA', df$sample1)] <- ifelse(df$Cq_mean[grepl('TypA', df$sample1)] >= 37.1,
'neg', 'pos')
您需要在每个所需的新列中执行一次。
grepl
仅过滤掉样本变量中您选择的字符串(此处为TypA
)所在的行。