Ranking changes according to their frequency

image

whats the problem?

D is a column in Excel

library(ggmosaic)
library(readxl)
library(dplyr)  
library(ggplot2)
library(ggpubr)


######################################## - A - #######################################################

getwd()
setwd("C:/ZS (projekt)") # V případě potřeby upravte odkaz na vlastní pracovní adresář

data_ex = read_excel("C:/Users/zukov/OneDrive/Desktop/Pocitacove_hry.xlsx")


# Zjednodušme pojmenování proměnných.
colnames(data_ex)=c("ID","nazev","rok_vydaju","zanr","publisher","plat","pocitac_studium","soc_site",
                     "os","leg_software","ikb_znalost")


data_ex$zanr = as.factor(data_ex$zanr)

levels(data_ex$zanr)

data_ex$zanr = factor(data_ex$zanr,
                             levels = c("Sports/Racing","Simulation","Strategy","Role-Playing","Action","Shooter"),
                             labels = c("Sportovní/Závodní","Simulace","Strategie","RPG","Akční","Střílečka"))

# Určeme četnosti výskytu jednotlivých variant a uložme je pod názvem cetnosti_nom.
cetnosti_nom = table(data_ex$zanr)
cetnosti_nom # výpis absolutních četností

# V případě nominální proměnné je vhodné varianty proměnné seřadit dle jejich četností.
names(sort(table(dotaznik2$zanr),decreasing = D))

data_ex$zanr = factor(data_ex$zanr,
                             levels = names(sort(table(data_ex$zanr),
                                                 decreasing = TRUE)),
                             order = D)

cetnosti_nom = table(data_ex$zanr)
cetnosti_nom # Nyní jsou výstupem četnosti variant analyzované proměnné v požadovaném pořadí.

# Určíme relativní četnosti jednotlivých typů studenta a uložíme je pod názvem rel.cetnosti.
rel.cetnosti_nom = prop.table(cetnosti_nom)
rel.cetnosti_nom = cetnosti_nom/sum(cetnosti_nom) # alternativní "ruční" výpočet relativních četností
rel.cetnosti_nom

# Dle celkového počtu respondentů se rozhodneme o zaokrouhlení rel. četností a vyjádříme je v procentech.
sum(cetnosti_nom) # Vzhledem k počtu respondentů je vhodné procenta zaokrouhlit na desetiny procent.
rel.cetnosti_nom = round(100*rel.cetnosti_nom,digits = 1)
rel.cetnosti_nom

# Vzhledem k zaokrouhlování relativních četností je nutno ošetřit případnou zaokrouhlovací chybu.
rel.cetnosti_nom[1] = 100 - sum(rel.cetnosti_nom[2:5])
rel.cetnosti_nom

# Na závěr vytvořme tabulku četností (tab_cetnosti_nom) obsahující záznamy o absolutních i relativních četnostech
# a exportujme ji do csv formátu do pracovního adresáře.
tab_cetnosti_nom = cbind(cetnosti_nom,rel.cetnosti_nom)
tab_cetnosti_nom
colnames(tab_cetnosti_nom) = c("četnosti","rel.četnosti (%)") # pojmenování sloupců tabulky
tab_cetnosti_nom
# Export tabulky do pracovního adresáře (Napíšeme-li do uvozovek celou cestu, exportujeme tabulku do libovolného lokálního umístění.)
write.csv2(tab_cetnosti_nom,"tab_cetnosti_nom.csv")  

# Ve výzkumné zprávě by součásti tabulky měl být i celkový počet respondentů, 
# popř. by toto mělo být zmíněno v příslušném titulku.

#/////////////////////////////////////////////////////////////////////////////////////
#* 1.2 Ordinální proměnná (základní R) #######

# Určeme rozdělení respondentů (četnosti) dle úrovně jejich znalostí v oblasti informační a komunikační bezpečnosti. 
# (proměnná ikb_znalost). Varianty proměnné překódujme na: uživatelská, mírně pokročilá, pokročilá, velmi pokročilá. 

data_ex$ikb_znalost = as.factor(data_ex$ikb_znalost) # překódování na typ factor
levels(data_ex$ikb_znalost)

# Všimněme si, že v tomto případě se jedná o ordinální (přirozeně uspořádanou) proměnnou.
# V tomto případě je vhodné varianty proměnné přímo "přirozeně" uspořádat. 



data_ex$ikb_znalost = factor(data_ex$ikb_znalost,
                             levels = c("Uživatelská (PC používám jako nástroj pro každodenní činnost)",
                                        "Mírně pokročilá (Kromě uživatelské činnosti instalují software, nastavuji OS, ...)",
                                        "Pokročilá (Jsem schopen instalovat OS.)",
                                        "Velmi pokročilá (Starám se o nastavení, bezpečnost a servis PC.)"),
                             labels = c("uživatelská",
                                        "mírně pokročilá",
                                        "pokročilá",
                                        "velmi pokročilá"),
                             order = D)
levels(data_ex$ikb_znalost)


#* Úkol B --------------------------------------------------------------------------------------
# Další postup tvorby tabulky četnosti již znáte. Pokuste se tabulku četnosti (obsahující absolutní
# i relativní četnosti) vytvořit samostatně. Výstup uložte jako tab_cetnosti_ord. 

cetnosti_ord = table(data_ex$ikb_znalost) # výpočet četností(Všimněte si, že díky uspořádání, které jsme provedli výše, jsou varianty proměnné seřazeny tak, jak bychom očekávali.)
rel.cetnosti_ord = prop.table(cetnosti_ord) # výpočet relativních četností
sum(cetnosti_ord) # výpočet celkového počtu respondentů nutný pro rozhodnutí o zaokrouhlení relativních četností
rel.cetnosti_ord = round(100*rel.cetnosti_ord,1) # vyjádření rel. četností v procentech a zaokrouhlení na jedno des. místo
rel.cetnosti_ord[4] = 100 - sum(rel.cetnosti_ord[1:3]) # ošetření zaokrouhlovací chyby
tab_cetnosti_ord = cbind(cetnosti_ord,rel.cetnosti_ord) # vytvoření tabulky četností
colnames(tab_cetnosti_ord) = c("četnosti","rel. četnosti (%)") # úprava názvů sloupců
tab_cetnosti_ord

#---

# Tabulka četností pro ordinální proměnnou se zpravidla rozšiřuje 
# o kumulativní četnosti a kumulativní relativní četnosti.
# Kumulativní četnost dané varianty proměnné je součtem četnosti dané varianty 
# a četnosti všech "nižších" variant.
# Kumulativní relativní četnost je definována obdobně.

kum.cetnosti = cumsum(cetnosti_ord)
kum.rel.cetnosti = cumsum(rel.cetnosti_ord) 
tab_cetnosti_ord = cbind(cetnosti_ord,rel.cetnosti_ord,kum.cetnosti,kum.rel.cetnosti)
colnames(tab_cetnosti_ord)=c("četnosti","rel. četnosti (%)",
                             "kum. četnosti","kum. rel. četnosti (%)")
tab_cetnosti_ord # Výsledky interpretujte!
write.csv2(tab_cetnosti_ord,"tab_cetnosti_ord.csv")# export tabulky v csv formátu do pracovního adresáře

#/////////////////////////////////////////////////////////////////////////////////////
#* 1.3 Nominální proměnná (dplyr) #######

# Analyzujme strukturu respondentů z hlediska jejich sebehodnocení (proměnná zanr).
# Využijme toho, že proměnná je již kódovaná jako typ factor a její varianty jsou seřezeny 
# dle četnosti.Pro tvorbu tabulky četností obsahující jak absolutní, tak i relativní četnosti
# využijme balíček dplyr.

tab_cetnosti_nom_dp = data_ex %>%
  group_by(zanr) %>%
  summarise(cetnost = n()) %>%                                            # výpočet abs. četností
  mutate(rel_cetnost_proc = round(100*(cetnost / sum(cetnost) ),1) )      # výpočet rel. četností

colnames(tab_cetnosti_nom_dp)=c("typ studenta","četnost", "rel. četnost (%)")

# Ošetříme případnou zaokrouhlovací chybu
tab_cetnosti_nom_dp[1,3]=100-sum((tab_cetnosti_nom_dp[2:5,3]))
tab_cetnosti_nom_dp

write.csv2(tab_cetnosti_nom_dp,"tab_cetnosti_nom_dp.csv") # export výstupu do pracovního adresáře


par(mfrow = c(1,1), # jednoduché rozdělení grafického okna - 1 řádek, 1 sloupec
    mar = c(2,5,2,2), # okraje kolem každého z grafů v počtech řádků - - c(dole, vlevo, nahoře, vpravo)
    oma = c(2,2,2,2))


cetnosti_nom
barplot(cetnosti_nom)

bp=barplot(cetnosti_nom,
           col = "gray",                                             
           main="Struktura respondentů \n dle jejich sebehodnocení",     
           xlab="pocet",                                                  
           ylab="počet respondentů",                                    
           ylim=c(0,max(cetnosti_nom)+5),                                
           names.arg=c("Sportovní/Závodní","Simulace","Strategie","RPG","Akční","Střílečka"),                                 
           space=0.6)             

popisky_nom = paste0(cetnosti_nom," (",rel.cetnosti_nom,"%)")
popisky_nom

text(bp,                                                           
     cetnosti_nom,
     popisky_nom,          
     pos=3)						 

Thanks so much!

the problem is that the decreasing parameter of sort should be a logical i.e. either TRUE or FALSE ; anything else is improper use.
You can either reverse the sort order , or not.

simple example of proper use.

(example_df <- data.frame(xyz = c(5,4,9,5)))

table(example_df$xyz)
# 4 5 9 
# 1 2 1 

sort(table(example_df$xyz))
# 4 9 5 
# 1 1 2 

sort(table(example_df$xyz),decreasing = TRUE)
# 5 4 9 
# 2 1 1

This topic was automatically closed 42 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.