1. feladat. Szűrés.
Ahttp://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 aDrink
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!
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 ...
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
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
Drink
változó 3 szintű faktor, így 3 új adattáblát hozunk létrevíz
számárahallgatok.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
tej
számárahallgatok.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
üdítő
számárahallgatok.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ő
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
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
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.
Ahttp://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!
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 ...
Forbes2000[Forbes2000$country=="Hungary",c("rank","name")]
rank name
994 994 OTP Bank
1002 1002 MOL
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
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
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