Как я могу получить средства после разделения данных по столбцам?статистика с R - PullRequest
0 голосов
/ 17 июля 2011

спасибо за полезный ответ:

Цикл по вектору (самоанализ в R?) Или какой-то другой подход

Я хочу получить среднее значение для каждоговектор без необходимости набирать его для каждого вектора в отдельности.как мне это сделать?

Мой код:

probability_ratings = split(offline$Probability,
  paste(offline$Item, offline$Cond, sep=""))
head(probability_ratings)

$i01c1
[1] 7 7 7 3 7 3 7 6

$i01c2
[1] 4 4 5 3 4 5 5 3

$i01c3
[1] 7 4 6 4 7 5 5 5

$i01c4
[1] 1 2 2 1 2 2 2 4

$i01c5
[1] 5 5 6 5 7 3 4

$i01c6
[1] 6 6 7 6 7 5 6

Мне нужно среднее значение каждой строки, но я не уверен, что это за тип данных, и если / как я могу применитьсреднее () функция.

Спасибо, Катерина

Ответы [ 2 ]

7 голосов
/ 17 июля 2011

split возвращает список, поэтому вам просто нужно использовать sapply или lapply, чтобы применить mean к каждому элементу списка.lapply вернет список, а sapply вернет именованный вектор (в данном случае).

probability_ratings <- list(
  i01c1=c(7,7,7,3,7,3,7,6),
  i01c2=c(4,4,5,3,4,5,5,3),
  i01c3=c(7,4,6,4,7,5,5,5),
  i01c4=c(1,2,2,1,2,2,2,4),
  i01c5=c(5,5,6,5,7,3,4),
  i01c6=c(6,6,7,6,7,5,6) )
sapply(probability_ratings, mean)
#    i01c1    i01c2    i01c3    i01c4    i01c5    i01c6 
# 5.875000 4.125000 5.375000 2.000000 5.000000 6.142857 
3 голосов
/ 17 июля 2011

Я бы пошел за агрегат (), без использования split.Используя пример из вашей ссылки:

tf <- data.frame(
  formant = sample(c("F1","F2"), 100, T),
  vowels = sample(c('a', 'e', 'i', 'o', 'u'), 100, T),
  IL = runif(100)
)
aggregate(IL ~ formant + vowels, data = tf, mean)

, но есть и множество других возможностей сделать это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...