[R-br] Contar casos em cada variável e em todas as variáveis

Éder Comunello comunello.eder em gmail.com
Sábado Maio 28 18:02:26 BRT 2016


Boa tarde!

O uso do sapply() no script anterior acabou "misturando" os valores. Então
usei a abordagem sugerida por "salah" pra desmontar o data.frame e aplicar
o table().


### <code r>
df <- data.frame(
     ATO_1=c("ART 121", "ART 33", "ART 121", "ART 155", "ART 28", "ART
121", "ART 15"),
     ATO_2=c("ART 155", "ART 28", "ART 15", "ART 33", "ART 33", "ART 121",
"ART 121"),
     ATO_3=c("ART 180", "ART 10", "ART 155", "ART 121", "ART 33", "ART
121","ART 180")); df

lapply(df, table)

df2 <- reshape::melt(cbind(id=1:7, df), id="id")[, -1]; df2
table(df2)
addmargins(table(df2))
#         value
# variable ART 121 ART 15 ART 155 ART 28 ART 33 ART 10 ART 180 Sum
#    ATO_1       3      1       1      1      1      0       0   7
#    ATO_2       2      1       1      1      2      0       0   7
#    ATO_3       2      0       1      0      1      1       2   7
#    Sum         7      2       3      2      4      1       2  21
### </code>


​
================================================
Éder Comunello
Agronomist (UEM), MSc in Environ. Sciences (UEM)
DSc in Agricultural Systems Engineering (USP/Esalq)
Brazilian Agricultural Research Corporation (Embrapa)
Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00




Em 27 de maio de 2016 20:11, Amiko Bh <amikobh em gmail.com> escreveu:

> Ei Eder!
>
> Segui sua ideia, porque foi a que mais entendi, mas retorna o seguinte
> erro:
>
>
> > addmargins(tab)Error in addmargins(tab) : 'A' deve ser um array ou tabela
>
> >
>
> Aproveito para agradecer a ajuda de todos
> .
> Elerson
>
>
> Em 27 de maio de 2016 17:33, Éder Comunello <comunello.eder em gmail.com>
> escreveu:
>
>> Outra ideia...
>>
>> df <- data.frame(
>>      ATO_1=c("ART 121", "ART 33", "ART 121", "ART 155", "ART 28", "ART
>> 121", "ART 15"),
>>      ATO_2=c("ART 155", "ART 28", "ART 15", "ART 33", "ART 33", "ART
>> 121", "ART 121"),
>>      ATO_3=c("ART 180", "ART 10", "ART 155", "ART 121", "ART 33", "ART
>> 121","ART 180"))
>>
>> tab <- sapply(df, table); tab
>>
>> addmargins(tab)
>>
>> #         ATO_1 ATO_2 ATO_3 Sum
>> # ART 121     3     2     1   6
>> # ART 15      1     1     2   4
>> # ART 155     1     1     1   3
>> # ART 28      1     1     2   4
>> # ART 33      1     2     1   4
>> # Sum         7     7     7  21
>>
>>>> ================================================
>> Éder Comunello
>> Agronomist (UEM), MSc in Environ. Sciences (UEM)
>> DSc in Agricultural Systems Engineering (USP/Esalq)
>> Brazilian Agricultural Research Corporation (Embrapa)
>> Dourados, MS, Brazil |<O>|
>> ================================================
>> GEO, -22.2752, -54.8182, 408m
>> UTC-04:00 / DST: UTC-03:00
>>
>>
>>
>>
>> Em 26 de maio de 2016 17:31, salah <salah3.1416 em gmail.com> escreveu:
>>
>>> Caro
>>>
>>> Segue sugestões
>>>
>>> library(reshape2)
>>> ATO$id = 1:7 ##acrescenta uma coluna de controle para o melt
>>> ##remodelando sua tabela
>>> ATOMelt = melt(ATO, id="id", variable.name="ATO_n", value.name="ART")
>>>
>>> ##usando dplyr
>>> library(dplyr)
>>> ATOMelt %>% count(ART)
>>>
>>> ##usando o poderoso data.table
>>> library(data.table)
>>> setDT(ATOMelt) ##converte para data.table
>>> ##contando
>>> ATOMelt[, .N, by = .(ART)]
>>>
>>> saudações
>>>
>>>
>>> Em 26/05/2016 16:28, Amiko Bh escreveu:
>>>
>>> Pessoal,
>>>
>>> Dado o banco:
>>>
>>> *ATO_1*
>>>
>>> *ATO_2*
>>>
>>> *ATO_3*
>>>
>>> ART 121
>>>
>>> ART 155
>>>
>>> ART 180
>>>
>>> ART 33
>>>
>>> ART 28
>>>
>>> ART 10
>>>
>>> ART 121
>>>
>>> ART 15
>>>
>>> ART 155
>>>
>>> ART 155
>>>
>>> ART 33
>>>
>>> ART 121
>>>
>>> ART 28
>>>
>>> ART 33
>>>
>>> ART 33
>>>
>>> ART 121
>>>
>>> ART 121
>>>
>>> ART 121
>>>
>>> ART 15
>>>
>>> ART 121
>>>
>>> ART 180
>>>
>>>
>>> a) Preciso contar cada elemento em cada variável, para que vislumbre o
>>> seguinte resultado:
>>>
>>> *ATO_1*
>>>
>>> ART 121 = 3
>>> ART 33 = 1
>>> ART 155= 1
>>> ART 28= 1
>>> ART 15 = 1
>>>
>>> e assim com *ATO_2 e **ATO_3.*
>>>
>>> b) preciso saber o total de cada elemento em todos as colunas, assim:
>>>
>>> ART 121 = 7
>>> ART 33 = 4
>>> ART 155= 3
>>> ART 28= 2
>>> ART 15 = 2
>>> ART 180=2
>>> ART 10=1
>>>
>>> Muito obrigado.
>>>
>>>
>>>
>>> _______________________________________________
>>> R-br mailing listR-br em listas.c3sl.ufpr.brhttps://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.
>>>
>>>
>>>
>>> _______________________________________________
>>> R-br mailing list
>>> R-br em listas.c3sl.ufpr.br
>>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>>> código mínimo reproduzível.
>>>
>>
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br
>> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
>> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
>> código mínimo reproduzível.
>>
>
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160528/befc5830/attachment.html>


Mais detalhes sobre a lista de discussão R-br