R子设置基于列名并计算p值

时间:2017-10-19 20:12:25

标签: r dataframe statistics subset

我有这个数据框,如下面的代码所示。我想要做的是打印5种蛋白质,其中样品1(任何样品1英寸,可以是之后的任何字母)和样品2(任何样品2英寸,可以是之后的任何字母)之间的差异最大。 p值需要从wilcoxon检验中计算出来。

我想对这些数据进行wilcoxon非参数检验以计算p值,然后根据此值计算p值。 我不确定如何根据样本名称对数据进行子集化,只要数字相同,就可以将1或2中的任何一个与之匹配,而不管后面的字母是什么。我不知道从哪里开始编码以及如何为样本1正确地将数据子集合在一起,然后样本2。

为了使事情更清楚,我想分别对所有样品1和2进行wilcoxon测试。然后使用此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)

1 个答案:

答案 0 :(得分: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