Я работаю с данными опроса, состоящими из целочисленных ответов на несколько вопросов (y1, y2, y3, ...) и взвешенного количества, назначенного каждому респонденту, например:
foo <- data.frame(wcount = c(10, 1, 2, 3), # weighted counts
y1 = sample(1:5, 4, replace=T), # numeric responses
y2 = sample(1:5, 4, replace=T), #
y3 = sample(1:5, 4, replace=T)) #
>foo
wcount y1 y2 y3
1 10 5 5 5
2 1 1 4 4
3 2 1 2 5
4 3 2 5 3
и я хотел бы преобразовать это в консолидированную версию фрейма данных взвешенной таблицы, в которой первый столбец представляет значения ответа, а следующие 3 столбца представляют взвешенные числа. Это можно сделать явно по столбцу, используя:
library(Hmisc)
ty1 <- wtd.table(foo$y1, foo$wcount)
ty2 <- wtd.table(foo$y2, foo$wcount)
ty3 <- wtd.table(foo$y3, foo$wcount)
bar <- merge(ty1, ty2, all=T, by="x")
bar <- merge(bar, ty3, all=T, by="x")
names(bar) <- c("x", "ty1", "ty2", "ty3")
bar[is.na(bar)]<-0
>bar
x ty1 ty2 ty3
1 1 3 0 0
2 2 3 2 0
3 3 0 0 3
4 4 0 1 1
5 5 10 13 12
Я подозреваю, что есть способ автоматизировать это с помощью plyr и numcolwise или ddply. Например, примерно следующее, но я не уверен, что еще нужно для завершения работы:
library(plyr)
bar2 <- numcolwise(wtd.table)(foo[c("y1","y2","y3")], foo$wcount)
>bar2
y1 y2 y3
1 1, 2, 5 2, 4, 5 3, 4, 5
2 3, 3, 10 2, 1, 13 3, 1, 12
Есть предположения?
mitools
+survey
, чтобы получить правильные доверительные интервалы. - person Anthony Damico   schedule 04.10.2014