2016-12-13 90 views
0

我有一个包含3列“Symbol”,“logFC”和“PValue”的数据框。我想创建一个标记为“Rank”的第四列,它将“logFC”中的值的符号乘以“PValue”列中的-log10()p值。我可以在Excel中轻松完成此操作,但是我想知道是否有可能在R中执行此操作。谢谢。R:通过-log10的值乘以列B的符号C列

> head(test) 
    Symbol logFC PValue 
1  APP 0.590 0.000156 
2 MRPS6 -0.301 0.000307 
3 PLEKHA6 2.541 0.000541 
4 TSC22D1 0.331 0.000624 
5 OMA1 0.268 0.000724 
6 POPDC2 0.764 0.000892 

要创建:

 Symbol logFC PValue Rank 
1  APP 0.590 0.000156 3.8068754016 
2  MRPS6 -0.301 0.000307 -3.5128616245 
3 PLEKHA6 2.541 0.000541 3.2668027349 
4 TSC22D1 0.331 0.000624 3.2048154103 
5  OMA1 0.268 0.000724 3.1402614338 
6 POPDC2 0.764 0.000892 3.0496351456 

回答

0

test$Rank = -sign(test$logFC) * log(test$PValue, 10)

0

通过以下命令:

test$rank <- -1*sign(test$logFC)*log10(test$PValue) 

test <- within(test, rank <- -1*sign(logFC)*log10(PValue)) 
0

使用dplyr:

df <- mutate(df, Rank = sign(logFC) * (-log10(PValue))) 
0

这里是data.table

library(data.table) 
setDT(test)[, Rank := -1*sign(logFC) * log10(Pvalue)] 
选项