2017-10-06 7 views
0

Si vous avez une trame de données, par exemple:Comment extraire des valeurs répondant à un certain critère

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

* concentrations d'éléments

Et vous exécutez un shapiro.test et les résultats sont, par exemple:

   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 

et vous devez extraire toutes les valeurs p égales ou inférieures à 0,5, comment le faites-vous? J'ai essayé:

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

(noter: supposons que le nom des résultats était STAT/liste contenant des données ..

Merci à l'avance

+0

Vous souhaitez extraire les colonnes dont la valeur p est inférieure à 0,05? Ou juste un vecteur nommé des p.values ​​qui sont en dessous de .05? – Tunn

Répondre

0

Une lecture rapide de la page d'aide pour le shapiro test indique que l'objet retourné est un élément de liste contenant plusieurs objets, y compris les valeurs de p.

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

donc, si vous deviez exécuter le test de shapiro sur plusieurs colonnes de données numériques comme:

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) 

Et inspecter les résultats à l'aide str(). Vous trouverez les valeurs p pour le test 4 sur ces exemples de données.

str

les extraire à l'aide d'un code en boucle, et vous êtes bon pour aller

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

Hope that helps!

+0

Ok - super! C'était utile - Je n'y ai pas pensé. passez une bonne journée! –