我有一些看起来像这样的基因表达数据:
> d$new_column2<-c("down","up","mixed","down","mixed","mixed","up")
> d
gene_id day_1 day_2 day_3 day_4 new_column
1 Gene_1 -3.836501 -4.643856 -5.058894 -5.058894 down
2 Gene_2 13.161867 6.740118 13.507918 13.349972 up
3 Gene_3 -6.643856 5.766860 -6.127014 -6.726967 mixed
4 Gene_4 -2.736966 -3.058894 -2.643856 -2.943416 down
5 Gene_5 -2.836501 -3.473931 3.643856 -4.321928 mixed
6 Gene_6 2.836501 -3.058894 3.836501 -5.643856 mixed
7 Gene_7 11.000232 11.353974 10.792245 10.309476 up
当您从左到右阅读基因数据时,您可以看到在某些基因中,表达总是负的,有些表达总是正面的,有些则是混合的。我想创建一个新专栏,描述这些基因是否始终是正面,负面或混合的。像这样:
{{1}}
除了自动完成,不是手动编写的。所以基本上我喜欢R来读取整行中的数字,并报告数字是否始终是一致的,正面的,负面的,或两者的混合。我想在一个与我的基因ID匹配的新列中描述这种行为。
感谢您的帮助!
答案 0 :(得分:1)
如果将data.frame子集化为数字数据(在本例中为第2列到第5列),这应该适合您:
df$new_column <- apply(df[,2:5], 1, function(x) {
if(sign(max(x)) == sign(min(x))) { # Then all same sign
if(sign(max(x)) == 1) "up" # Then all positive
else "down" # All negative
}
else "mixed" # Signs of max/min not equal, so mixed
})