2013-09-23 2 views
0

Это, вероятно, простой вопрос, но я только начинаю учиться, как использовать R.Перебор столбцов CSV-файла в R

У меня есть CSV-файл, заполненный столбцы, содержащие числа. Для каждого столбца чисел я хочу, чтобы R провела тест на нормальность Шапиро-Уилкса. Итак, я хочу прокрутить столбцы слева направо, чтобы провести shapiro.test(file$column1), shapiro.test(file$column2) и т. Д.

Все столбцы имеют имя в качестве заголовка, и они не содержат одинакового количества строк.

Как мне это сделать? Спасибо заранее!

ответ

4

Попробуйте

apply(file, 2, shapiro.test) 

и посмотрите на ?apply

Другой способ использует sapply

sapply(file, shapiro.test, simplify=FALSE) 

также смотреть на ?sapply

Пример использования airquality набора данных

> data(airquality) 
> head(airquality) 
    Ozone Solar.R Wind Temp Month Day 
1 41  190 7.4 67  5 1 
2 36  118 8.0 72  5 2 
3 12  149 12.6 74  5 3 
4 18  313 11.5 62  5 4 
5 NA  NA 14.3 56  5 5 
6 28  NA 14.9 66  5 6 

# Applying shapiro.test function 
> Test <- apply(airquality, 2, shapiro.test) 

# Showing results in a nice format 
> sapply(Test, function(x) unlist(x[c("statistic", "p.value")])) 
        Ozone  Solar.R  Wind  Temp  Month   Day 
statistic.W 8.786661e-01 9.418347e-01 0.9857501 0.976173252 8.880451e-01 9.531254e-01 
p.value  2.789638e-08 9.493099e-06 0.1178033 0.009320041 2.258290e-09 5.047775e-05 

> sapply(Test, function(x) c(x["statistic"], x["p.value"])) # same results as above 
      Ozone  Solar.R  Wind  Temp  Month  Day   
statistic 0.8786661 0.9418347 0.9857501 0.9761733 0.8880451 0.9531254 
p.value 2.789638e-08 9.493099e-06 0.1178033 0.009320041 2.25829e-09 5.047775e-05 
+0

Спасибо! Тем не менее, я заметил, что это работает только тогда, когда нет столбцов, где все числа одинаковы (например, столбец, который содержит только те). В противном случае это происходит: _Error в FUN (newX [, i], ...): все значения «x» идентичны. Есть ли способ сказать R, чтобы пропустить эти столбцы, поэтому это не приводит к ошибке? – Johanna

+0

Да, есть способ сказать R пропустить эти колонии, использовать функции индексирования '['. Посмотрите на '? '[" '. Для пропуска столбца 3 из 'файла' просто сделайте' файл [, -3] '. –

Смежные вопросы