2017-10-06 97 views
0

如果你有一个数据帧,例如:达到一定的标准,如何提取值

D1 <-(DW$Ag, DW$Al, DW$As, DW$Ba) 

*元素

的浓度,并在运行shapiro.test 和结果,例如:

   DW.Ag  DW.Al  DW.As  DW.Ba  
statistic 0.9030996 0.5204454 0.9761229 0.9286749 
p.value 0.01000898 8.873327e-09 0.7157865 0.04528581 

并且您需要提取所有等于或低于0.5的p值,您如何做? 我想:

stat[stat$p.value <= 0.5, ] 
stat[which(lres1$p.value <= 0.5), ] 

(注意:假设结果的名字是STAT /列表包含数据..提前

感谢

+0

您想提取p.value低于.05的列吗?或者只是在.05以下的p.values的命名向量? – Tunn

回答

0

帮助页面为夏皮罗快速阅读测试表明返回的对象是包含多个对象的列表项,包括p值。

str(shapiro.test(rnorm(100, mean = 5, sd = 3))) 

所以如果你要运行夏皮罗测试对多列数字数据如:

df <- data.frame(x1 = rnorm(100, mean = 5, sd = 3), x2 = rnorm(100, mean = 5, sd = 3), x3 = rnorm(100, mean = 5, sd = 3), x4 = rnorm(100, mean = 5, sd = 3)) 
list <- lapply(df, shapiro.test) 

并使用str()检查结果。您可以在此样本数据上找到4次测试的p值。

str

提取出来使用一些循环的代码,你是好去

x <- unlist(lapply(list, `[`, 'p.value')) 
x[x <= 0.5] 

希望帮助!

+0

好的 - 太好了!这很有帮助 - 没有这样想过。 祝您有个愉快的一天! –