knitr::opts_chunk$set(
echo = TRUE,
message = FALSE,
warning = FALSE
)Práca s údajmi v R
Predstavenie databázy
Pre svoje zadanie som si vybral databázu počítačových hier z platformy Steam. Databáza obsahuje údaje o hrách, ich dátumoch vydania, cenách, žánroch a hodnoteniach.
Databázu plánujem využiť aj pri ďalších cvičeniach.Zaujíma ma predovšetkým vývoj počtu vydaných hier v jednotlivých rokoch.
1. Náhľad na databázu
Databázu som si otvoril v tabuľkovom procesore Excel. Každý riadok predstavuje jednu hru a jednotlivé stĺpce obsahujú informácie o nej.
2. Import údajov
Keďže databáza obsahuje veľa stĺpcov a textových údajov, vyberiem iba premenné potrebné pre analýzu.
library(readr)
library(dplyr)
library(ggplot2)
library(knitr)udaje <- read_csv(
"games.csv",
col_select = c(
"AppID", "Name", "Release date",
"Price", "Genres", "Positive", "Negative"
),
show_col_types = FALSE
)
head(udaje)# A tibble: 6 × 7
AppID Name `Release date` Price Genres Positive Negative
<dbl> <chr> <chr> <dbl> <chr> <dbl> <dbl>
1 20200 Galactic Bowling Oct 21, 2008 20.0 Casual,I… 6 11
2 655370 Train Bandit Oct 12, 2017 0.99 Action,I… 53 5
3 1732930 Jolt Project Nov 17, 2021 4.99 Action,A… 0 0
4 1355720 Henosis™ Jul 23, 2020 5.99 Adventur… 3 0
5 1139950 Two Weeks in Painland Feb 3, 2020 0 Adventur… 50 8
6 1469160 Wartune Reborn Feb 26, 2021 0 Adventur… 87 49
Pozriem si názvy jednotlivých stĺpcov a základné informácie o databáze.
colnames(udaje)[1] "AppID" "Name" "Release date" "Price" "Genres"
[6] "Positive" "Negative"
dim(udaje)[1] 97410 7
summary(udaje) AppID Name Release date Price
Min. : 10 Length :97410 Length :97410 Min. : 0.000
1st Qu.: 847793 N.unique :96508 N.unique : 4709 1st Qu.: 0.990
Median :1489990 N.blank : 0 N.blank : 0 Median : 4.190
Mean :1524636 Min.nchar: 1 Min.nchar: 8 Mean : 7.086
3rd Qu.:2180648 Max.nchar: 207 Max.nchar: 12 3rd Qu.: 9.990
Max. :3199580 NAs : 6 Max. : 999.980
Genres Positive Negative
Length :97410 Min. : 0.0 Min. : 0.0
N.unique : 2842 1st Qu.: 0.0 1st Qu.: 0.0
N.blank : 0 Median : 5.0 Median : 1.0
Min.nchar: 3 Mean : 848.9 Mean : 141.1
Max.nchar: 236 3rd Qu.: 35.0 3rd Qu.: 10.0
NAs : 4841 Max. :5764420.0 Max. :895978.0
3. Čistenie údajov
Úprava názvov premenných
Podobne ako v cvičení 4 si upravím názvy stĺpcov tak, aby sa mi s nimi jednoduchšie pracovalo.
udaje <- udaje %>%
rename(
ID = AppID,
Nazov = Name,
Datum = `Release date`,
Cena = Price,
Zanre = Genres,
Pozitivne = Positive,
Negativne = Negative
)
head(udaje)# A tibble: 6 × 7
ID Nazov Datum Cena Zanre Pozitivne Negativne
<dbl> <chr> <chr> <dbl> <chr> <dbl> <dbl>
1 20200 Galactic Bowling Oct 21, 2008 20.0 Casual,I… 6 11
2 655370 Train Bandit Oct 12, 2017 0.99 Action,I… 53 5
3 1732930 Jolt Project Nov 17, 2021 4.99 Action,A… 0 0
4 1355720 Henosis™ Jul 23, 2020 5.99 Adventur… 3 0
5 1139950 Two Weeks in Painland Feb 3, 2020 0 Adventur… 50 8
6 1469160 Wartune Reborn Feb 26, 2021 0 Adventur… 87 49
Kontrola chýbajúcich údajov
Pomocou funkcie is.na() zistím počet chýbajúcich hodnôt v jednotlivých stĺpcoch.
colSums(is.na(udaje)) ID Nazov Datum Cena Zanre Pozitivne Negativne
0 6 0 0 4841 0 0
Odstránenie neúplných záznamov
Odstránim záznamy bez názvu hry, dátumu vydania alebo ceny.
udaje1 <- udaje %>%
filter(
!is.na(Nazov),
!is.na(Datum),
!is.na(Cena)
) %>%
distinct(ID, .keep_all = TRUE)
head(udaje1)# A tibble: 6 × 7
ID Nazov Datum Cena Zanre Pozitivne Negativne
<dbl> <chr> <chr> <dbl> <chr> <dbl> <dbl>
1 20200 Galactic Bowling Oct 21, 2008 20.0 Casual,I… 6 11
2 655370 Train Bandit Oct 12, 2017 0.99 Action,I… 53 5
3 1732930 Jolt Project Nov 17, 2021 4.99 Action,A… 0 0
4 1355720 Henosis™ Jul 23, 2020 5.99 Adventur… 3 0
5 1139950 Two Weeks in Painland Feb 3, 2020 0 Adventur… 50 8
6 1469160 Wartune Reborn Feb 26, 2021 0 Adventur… 87 49
Náhľad na upravenú databázu
Po základnom čistení som vytvoril upravenú verziu databázy, ktorú využijem na ďalšiu analýzu.
4. Práca s údajmi
Výber a triedenie
Vyberiem hry, ktorých cena je vyššia ako 30 a zoradím ich od najdrahších.
udaje1 %>%
filter(Cena > 30) %>%
arrange(desc(Cena)) %>%
select(Nazov, Cena, Zanre) %>%
head(10) %>%
kable()| Nazov | Cena | Zanre |
|---|---|---|
| The Leverage Game | 999.98 | Indie,Simulation |
| The Leverage Game Business Edition | 999.98 | Indie,Simulation |
| Ascent Free-Roaming VR Experience | 999.00 | Action |
| True Love | 500.00 | Action,Adventure,Casual,Indie |
| Aartform Curvy 3D 3.0 | 299.90 | Animation & Modeling |
| Houdini Indie | 269.99 | Animation & Modeling,Design & Illustration,Video Production,Game Development |
| VEGAS 19 Edit - Steam Edition | 249.00 | Video Production |
| 灰烬行星与填鸭少女 | 199.99 | Casual,Indie |
| Earthquake escape | 199.99 | Simulation |
| 安全教育 | 199.99 | Adventure |
Vytvorenie novej premennej
Rozdelím hry na bezplatné a platené.
udaje1 <- udaje1 %>%
mutate(
Typ = ifelse(Cena == 0, "Zadarmo", "Platená")
)
udaje1 %>%
count(Typ) %>%
kable()| Typ | n |
|---|---|
| Platená | 77688 |
| Zadarmo | 19716 |
5. Grafy
Graf č. 1 – Ceny hier
Pomocou histogramu zobrazím rozdelenie cien hier.
ggplot(subset(udaje1, Cena >= 0 & Cena <= 50), aes(x = Cena)) +
geom_histogram(binwidth = 5, boundary = 0,
fill = "lightblue", color = "darkblue") +
scale_x_continuous(
breaks = seq(2.5, 47.5, 5),
labels = paste(seq(0, 45, 5), seq(5, 50, 5), sep = "–")
) +
labs(title = "Rozdelenie cien hier na Steame",
x = "Cenové intervaly", y = "Počet hier") +
theme_minimal()Graf č. 2 – Počet hier podľa roku vydania
Z dátumu vydania vytvorím premennú Rok a zobrazím počet vydaných hier v jednotlivých rokoch.
library(lubridate)
udaje1 <- udaje1 %>%
mutate(Rok = year(mdy(Datum, quiet = TRUE)))
rocne_udaje <- udaje1 %>%
filter(!is.na(Rok), Rok <= 2025) %>%
count(Rok)
ggplot(rocne_udaje, aes(x = Rok, y = n)) +
geom_line(color = "darkblue", linewidth = 1) +
geom_point(color = "darkblue") +
labs(
title = "Vývoj počtu vydaných hier",
x = "Rok vydania",
y = "Počet hier"
) +
theme_minimal()6. Základné štatistiky
Vypočítam základné štatistiky cien hier.
udaje1 %>%
summarise(
Pocet = n(),
Priemer = mean(Cena),
Median = median(Cena),
Minimum = min(Cena),
Maximum = max(Cena)
) %>%
kable(digits = 2)| Pocet | Priemer | Median | Minimum | Maximum |
|---|---|---|---|---|
| 97404 | 7.09 | 4.19 | 0 | 999.98 |
7. Záver
V zadaní som pracoval s databázou počítačových hier Steam v spolupráci s ChatGPT. Naučil som sa importovať údaje do prostredia RStudio, upravovať názvy premenných, kontrolovať chýbajúce hodnoty a filtrovať záznamy. Vytvoril som tiež základné tabuľky a grafy, ktoré umožňujú jednoduchšie analyzovať herný trh.