2017-10-19 20 views
0

私はこのデータフレームを自分のコードに示しています。私がしたいのは、sample1(サンプル1が入っていて、後には任意の文字ができる)とサンプル2(サンプル2が入っている、いずれもその後の任意の文字でよい)との間に最も大きな違いがある5つのタンパク質をプリントすることです。 p値はウィルコクソン(wilcoxon)試験から計算する必要がある。列名に基づいてRサブセットを設定し、p値を計算する

これらのデータに対してwilcoxonノンパラメトリック検定を行い、この値に基づいてタンパク質を秩序づけるために使用したいp値を計算したいとします。 サンプル名に基づいてデータをサブセット化する方法がわかりません。番号が同じであれば、後続の文字にかかわらず、1または2のいずれかと一致するものはどれも一致します。私はコードをどこから始めるべきか、サンプル1とサンプル2のデータを正しくサブセット化する方法については不明です。

サンプル1とサンプル2を別々にウィルコクソンテストしたい。次に、このp値を使用して、互いに最も著しく異なる上位5種のタンパク質を印刷する。

ご協力いただきますようお願い申し上げます。ありがとうございます。

protein<-c("COX4", "LJK2", "JJ2", "HK1", "3DFG", "JE3","LOP2","PQE8") 
    sample1a<-c(2.01, 1.58, 1.49,2.09, 2.11, 1.54, 1.39, 1.49) 
    sample1b<-c(2.04, 1.57, 1.47,2.04, 2.10, 1.51, 1.40, 1.49) 
    sample2a<-c(2.07, 1.52, 1.59,2.19, 1.41, 1.51, 1.36, 1.41) 
    sample2b<-c(2.01, 1.48, 1.43,2.04, 2.01, 1.44, 1.49, 1.53) 
    sample3a<-c(2.11, 1.48, 1.49,2.09, 2.11, 1.54, 1.39, 1.48) 
    sample3b<-c(2:21, 1.38, 1.29,2.39, 2.07, 1.59, 1.29, 1.38) 


df<-data.frame(protein,sample1a,sample1b,sample2a,sample2b, sample3a, sample3b) 

答えて

0

まず第一に、あなたのポストされたデータは、あなたの代わりに、小数点の:と値を持つsample3bベクトルでは、右ではありません。それに、なぜキャラクター?
以下のようにして、すべてのペアワイズ列テストを実行できます。

# First convert to numeric 
df2 <- as.data.frame(sapply(df[-1], function(x) as.numeric(as.character(x)))) 

# Now define a function to be applied to pairs of columns 
fun <- function(x, y) wilcox.test(x, y, exact = FALSE)$p.value 
# apply the function above 
result <- sapply(df2, function(x) sapply(df2[-1], fun, x)) 

any(result < 0.05) # no p-value is significant 
#[1] FALSE 
+0

申し訳ありませんが、私はRに新しく、文字を作成する必要がないことを忘れてしまいました。 – Lentum

関連する問題