Чтение данных многомерных групп в R - PullRequest
2 голосов
/ 15 декабря 2011

Я много гуглил, но не нашел удовлетворительного решения своей проблемы.Скажем, у нас есть файл данных как:

Tag v1 v2 v3
A 1 2 3
B 1 2 2
C 5 6 1
A 9 2 7
C 1 0 1

Первая строка - заголовок.Первый столбец - это идентификатор группы (данные имеют 3 группы A, B, C), в то время как другие столбцы являются значениями.Я хочу прочитать этот файл в R, чтобы я мог применять различные функции к данным.Например, я попытался прочитать файл и попытался получить среднее значение столбца

dt<-read.table(file_name,head=T) #gives warnings
apply(dt,2,mean) #gives NA   NA   NA

Я хочу прочитать этот файл и хочу получить среднее значение столбца.Затем я хочу разделить данные на 3 группы (в соответствии с тегами A, B, C) и рассчитать среднее значение (по столбцам) для каждой группы.Любая помощь

1 Ответ

1 голос
/ 15 декабря 2011

apply(dt,2,mean) не работает, потому что apply приводит первый аргумент к массиву через as.matrix (как указано в первом абзаце раздела Подробности ?apply) Поскольку первый столбец является символьным, все элементы в объекте принудительной матрицы будут символьными.

Попробуйте вместо этого:

sapply(dt,mean) # works because data.frames are lists

Чтобы рассчитать среднее значение столбца по группам:

# using base functions
grpMeans1 <- t(sapply(split(dt[,c("v1","v2","v3")], dt[,"Tag"]), colMeans))
# using plyr
library(plyr)
grpMeans2 <- ddply(dt, "Tag", function(x) colMeans(x[,c("v1","v2","v3")]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...