Во-первых, это очень простой вопрос, который я не знаю, как сформулировать. Если вопрос является дубликатом (хотя я проверил, используя то, что, как мне показалось, может быть уместно сформулировать), я, очевидно, откажусь и оценим ссылку.
Во-вторых, я уверен, , есть более простой способ сделать то, что я пытаюсь, но я не хочу сбиваться с пути.
OK. Я пытаюсь просто получить таблицу пропорций столбцов из матрицы 0/1 (пропорция 1 зависит от значения другой переменной, которая в данном случае является PARTY).
мой data.frame - m103, с размерами (437,91) и следующим процессом (например, производит то, что я хочу):
prop.table(as.matrix(ddply(m103, .(PARTY), sum, na.rm=T)))
Но, конечно, я хочу сохранить вывод, и именно здесь возникает ошибка. Если я сделаю это:
a <- prop.table(as.matrix(ddply(m103, .(PARTY), sum, na.rm=T)))
Все отлично. Но НЕМЕДЛЕННО после этого, если я попытаюсь:
m103.avg.prop <- prop.table(as.matrix(ddply(m103, .(PARTY), sum, na.rm=T)))
Я получаю ошибку:
Error in FUN(X[[2L]], ...) : only defined on a data frame with all numeric variables
Я бы хотел сохранить в своем коде рациональную схему именования (которая будет продолжена во втором примере), но я не могу сказать, связано ли это с тем, что я пытался присвоить выводу, или что-то другое.
Большое спасибо!
РЕДАКТИРОВАТЬ: Давайте посмотрим, могу ли я быть более явным
#Data import
m103 <- read.csv("103_members_party.csv", header=T)
#See the first few rows/columns
m103[1:5,1:5]
#Produces this:
ID PARTY X930 X461 X137
1 15245 100 0 0 0
2 15000 100 0 0 0
3 29108 200 0 0 0
4 15001 100 0 0 0
5 29132 100 0 0 0
#Sum and get col percentages by PARTY (sums the 1's when PARTY==100, PARTY==200, etc)
#WITHOUT assigning to anything
prop.table(as.matrix(ddply(m103, .(PARTY), sum, na.rm=T)))
#Produces:
PARTY V1
[1,] 1.122515e-05 0.580000465
[2,] 2.245030e-05 0.416619418
[3,] 3.681849e-05 0.003309623
#With assignment to a
a <- prop.table(as.matrix(ddply(m103, .(PARTY), sum, na.rm=T)))
a
#Produces
PARTY V1
[1,] 1.122515e-05 0.580000465
[2,] 2.245030e-05 0.416619418
[3,] 3.681849e-05 0.003309623
#Now, assignment to m103.avg.prop
m103.avg.prop <- prop.table(as.matrix(ddply(m103, .(PARTY), sum, na.rm=T)))
#results in error:
Error in FUN(X[[2L]], ...) :
only defined on a data frame with all numeric variables