Bevezetés az R-be 2.0 - Feladatgyűjtemény

Szűrés

1. feladat. Szűrés.
A http://users.atw.hu/rdata/ber2/egyetem.csv tagolt szöveges állomány 657 hallgató adatát tartalmazza. Válogassuk külön adattáblába a fiúkat és a lányokat és végezzük el a Drink változó alapján is a leválogatást! Írassuk ki a képernyőre a 64 inch-nél kisebb hallgatókat, illetve 64 inch-nél nagyobb fiúkat! Majd válogassuk le a 63 és 66 inch közötti magassággal rendelkező tejfogyasztó lányokat!

Adatok beolvasása

hallgatok <- read.table(file = "http://users.atw.hu/rdata/ber2/egyetem.csv", 
                        sep=";", header = T, dec=",")
str(hallgatok)
'data.frame':    657 obs. of  6 variables:
 $ hallgato: int  1 2 3 4 5 6 7 8 9 10 ...
 $ Height  : num  67 64 61 61 70 63 61 64 66 65 ...
 $ neme    : Factor w/ 2 levels "female","male": 1 1 1 1 2 1 1 1 1 2 ...
 $ lefekves: num  -2.5 1.5 -1.5 2 0 1 1.5 0.5 -0.5 2.5 ...
 $ felkeles: num  5.5 8 7.5 8.5 9 8.5 7.5 7.5 7 8.5 ...
 $ Drink   : Factor w/ 3 levels "tej","üdítő",..: 3 2 1 3 2 3 3 2 3 1 ...

Fiúk leválogatása

hallgatok.fiuk <- hallgatok[hallgatok$neme == "male",]
head(hallgatok.fiuk) # az első 6 sor kiíratása
   hallgato Height neme lefekves felkeles Drink
5         5     70 male      0.0      9.0 üdítő
10       10     65 male      2.5      8.5   tej
11       11     72 male      0.0      6.5   tej
15       15     72 male      2.5      8.5 üdítő
18       18     66 male      2.5      8.0 üdítő
19       19     71 male      0.5      7.5   víz

Lányok leválogatása

hallgatok.lanyok <- hallgatok[hallgatok$neme == "female",]
head(hallgatok.lanyok)
  hallgato Height   neme lefekves felkeles Drink
1        1     67 female     -2.5      5.5   víz
2        2     64 female      1.5      8.0 üdítő
3        3     61 female     -1.5      7.5   tej
4        4     61 female      2.0      8.5   víz
6        6     63 female      1.0      8.5   víz
7        7     61 female      1.5      7.5   víz

A Drink változó 3 szintű faktor, így 3 új adattáblát hozunk létre

A víz számára
hallgatok.viz <- hallgatok[hallgatok$Drink == "víz",]
head(hallgatok.viz)
   hallgato Height   neme lefekves felkeles Drink
1         1     67 female     -2.5      5.5   víz
4         4     61 female      2.0      8.5   víz
6         6     63 female      1.0      8.5   víz
7         7     61 female      1.5      7.5   víz
9         9     66 female     -0.5      7.0   víz
12       12     63 female     -1.0      7.0   víz
A tej számára
hallgatok.tej <- hallgatok[hallgatok$Drink == "tej",]
head(hallgatok.tej)
   hallgato Height   neme lefekves felkeles Drink
3         3   61.0 female     -1.5     7.50   tej
10       10   65.0   male      2.5     8.50   tej
11       11   72.0   male      0.0     6.50   tej
14       14   63.5 female     -1.0     7.50   tej
24       24   71.0   male      2.0    10.00   tej
38       38   63.0 female      2.0     7.25   tej
Az üdítő számára
hallgatok.udito <- hallgatok[hallgatok$Drink == "üdítő",]
head(hallgatok.udito)
   hallgato Height   neme lefekves felkeles Drink
2         2     64 female      1.5      8.0 üdítő
5         5     70   male      0.0      9.0 üdítő
8         8     64 female      0.5      7.5 üdítő
13       13     67 female      2.5      6.5 üdítő
15       15     72   male      2.5      8.5 üdítő
18       18     66   male      2.5      8.0 üdítő

A 64 inch-nél kisebb hallgatók

hallgatok.64k <- hallgatok[hallgatok$Height < 64,]
head(hallgatok.64k)
   hallgato Height   neme lefekves felkeles Drink
3         3   61.0 female     -1.5      7.5   tej
4         4   61.0 female      2.0      8.5   víz
6         6   63.0 female      1.0      8.5   víz
7         7   61.0 female      1.5      7.5   víz
12       12   63.0 female     -1.0      7.0   víz
14       14   63.5 female     -1.0      7.5   tej

A 64 inch-nél nagyobb fiúk

hallgatok.64.f <- hallgatok[hallgatok$Height > 64 & hallgatok$neme=="male",]
head(hallgatok.64.f)
   hallgato Height neme lefekves felkeles Drink
5         5     70 male      0.0      9.0 üdítő
10       10     65 male      2.5      8.5   tej
11       11     72 male      0.0      6.5   tej
15       15     72 male      2.5      8.5 üdítő
18       18     66 male      2.5      8.0 üdítő
19       19     71 male      0.5      7.5   víz

A 63 és 66 inch közötti magassággal rendelkező tejfogyasztó lányok

hallgato.komp <- hallgatok[hallgatok$Height > 63 & 
               hallgatok$Height < 66 & 
               hallgatok$neme=="female" &
               hallgatok$Drink=="tej",]
head(hallgato.komp)
    hallgato Height   neme lefekves felkeles Drink
14        14   63.5 female     -1.0      7.5   tej
44        44   65.0 female     -1.0      9.5   tej
57        57   65.0 female      0.5      8.5   tej
131      131   64.5 female     -0.5      7.5   tej
190      190   64.0 female      1.5      7.0   tej
213      213   64.0 female      1.0     10.0   tej

2. feladat. Szűrés.
A http://users.atw.hu/rdata/ber2/Forbes2000.txt szöveges állomány 2000 vállalat adatát tartalmazza! Határozzuk meg a magyar cégek nevét és helyezését (country oszlop alapján)! Írassuk ki a képernyőre a 10 legnagyobb piaci értékkel (marketvalue oszlop) rendelkező cég nevét és piaci értékét! Határozzuk meg a legkisebb profittal (profits oszlop) rendelkező 5 cég minden adatát! Határozzuk meg a legnagyobb profittal (profits oszlop) rendelkező 10 amerikai vagy japán cég nevét, országát és profitját!

Adatok beolvasása

Forbes2000 <- read.table(file = "http://users.atw.hu/rdata/ber2/Forbes2000.txt",
                         sep=" ", header = T, dec=".")
str(Forbes2000)
'data.frame':    2000 obs. of  8 variables:
 $ rank       : int  1 2 3 4 5 6 7 8 9 10 ...
 $ name       : Factor w/ 2000 levels "Aareal Bank",..: 438 747 100 659 311 219 870 1827 663 1921 ...
 $ country    : Factor w/ 61 levels "Africa","Australia",..: 60 60 60 60 56 60 56 28 60 60 ...
 $ category   : Factor w/ 27 levels "Aerospace & defense",..: 2 6 16 19 19 2 2 8 9 20 ...
 $ sales      : num  94.7 134.2 76.7 222.9 232.6 ...
 $ profits    : num  17.85 15.59 6.46 20.96 10.27 ...
 $ assets     : num  1264 627 648 167 178 ...
 $ marketvalue: num  255 329 195 277 174 ...

A magyar cégek nevét és helyezése

Forbes2000[Forbes2000$country=="Hungary",c("rank","name")]
     rank     name
994   994 OTP Bank
1002 1002      MOL

A 10 legnagyobb piaci értékkel rendelkező cég neve és piaci értéke

Forbes2000[order(Forbes2000$marketvalue, decreasing=T)[1:10],
           c("name", "marketvalue")]
                   name marketvalue
2      General Electric      328.54
31            Microsoft      287.02
24               Pfizer      285.27
4            ExxonMobil      277.02
1             Citigroup      255.30
10      Wal-Mart Stores      243.74
58                Intel      196.87
3   American Intl Group      194.87
7            HSBC Group      177.96
354            Vodafone      174.61

A legkisebb profittal rendelkező 5 cég minden adata

Forbes2000[order(Forbes2000$profits)[1:5],]
    rank             name        country                    category sales
364  364 Deutsche Telekom        Germany Telecommunications services 56.40
374  374   France Telecom         France Telecommunications services 57.99
403  403 Mizuho Financial          Japan                     Banking 24.40
687  687             mmO2 United Kingdom Telecommunications services  7.70
354  354         Vodafone United Kingdom Telecommunications services 47.99
    profits  assets marketvalue
364  -25.83  132.01       84.18
374  -21.78  107.86       64.36
403  -20.11 1115.90       30.87
687  -16.03   21.12       14.69
354  -15.51  256.28      174.61

A legnagyobb profittal rendelkező 10 amerikai vagy japán cég neve, országa és profitja

Forbes2000.USA.Japan <- Forbes2000[Forbes2000$country == "United States" |
                                     Forbes2000$country == "Japan",]
Forbes2000.USA.Japan[order(Forbes2000.USA.Japan$profits,decreasing=T)[1:10],
                     c("name","country","profits")]
               name       country profits
4        ExxonMobil United States   20.96
1         Citigroup United States   17.85
2  General Electric United States   15.59
6   Bank of America United States   10.81
20      Freddie Mac United States   10.09
22     Altria Group United States    9.20
10  Wal-Mart Stores United States    9.05
31        Microsoft United States    8.88
8      Toyota Motor         Japan    7.99
16              IBM United States    7.58