You are on page 1of 21

x=1+2

y=sqrt(9)
z=x+y

#Baitap001
#a. #b.
rep(6, 6) (b=rep(c(5,8),4))
#c. #d.
rep(c(5,8), c(4,4)) rep(c(5,8,5,8,5,8), time=c(3,3,2,3,2,3))

#Baitap002
#a. #b.
seq(from=1,to=100,by=1) c(seq(1,9,1),seq(9,1,-1))
#c. #d. #e.
rep(seq(1,3,1),each=10) seq(from=2,to=100,by=2) seq(1,99,2)
#Baitap003
#a. Dudoan: 7 8 9 10 11 #b. Dudoan: 2 3 4 5 6 7 8 9
a=7:11 seq(2,9)
#c. Dudoan: 4 6 8 10 #d. Dudoan: 3 6 9 12 15 18 21 24 27 30
seq(4,10,2) seq(3,30,length=10)
#e)Dudoan: 6 4 2 0 -2 -4 #f)Dudoan: 0 0.05 0.1 0.15 ... 1
seq(6,-4,by=-2) seq(0,1,by=0.05)

#Baitap004
x<-c(5,9,2,3,4,6,7,0,8,12,2,9)
#demsophantu
(length(x))
#a. x[2] #b. x[2:4] #c. x[c(2,3,6)]
#d. x[c(1:5,10:12)] #e. x[-1]

#Baitap005

x=c(1,2,5,7,-3,0,5,1,5,6)
y=c(2,3,0,-5,7,8,11,9,3,2)
#a)Tính x+y…..
x+y
#b)Tạo những phần tử chẵn của X #c)Tạo những phần tử lẻ của Y
x%%2 y%%2!=0
x%%2==0 y[y%%2==1]
x[x%%2==0]
#d)những phần tử lớn hơn 0 của X #e. Những phần tử không âm của Y gán cho u
x[x>0] y[y>=0]
u = y[y>=0]

#a)
(k=seq(1,10,1))
x_k=(factorial(4)*choose(k+4,4))/(factorial(k+2))-(143/(4*factorial(k)))
sum(x_k)
#b) x_k[x_k>=0] #c) k[x_k>=0]

#Baitap007
#a) factorial(3) + 4*factorial(5) - factorial(6)
#b) factorial(seq(from=1, to=20, by=1))
#c)
x=seq(from=1,to=99,by=2)
x
y=seq(from=2,to=100,by = 2)
y
z=sum(x-y)
#d) factorial(25)/factorial(23)*factorial(2)-factorial(15)/factorial(13)*factorial(2)-
3*(factorial(10)/factorial(7)*factorial(3))

#e) #h)
n=10 (j=seq(1,100,1))
(k=seq(from=0,to=10,by=1)) sum(1/j^2)
(c=choose(n,k))
sum(c)

#j) (factorial(7)/factorial(2))-(factorial(5)-factorial(3))
#k) (factorial(15)/factorial(10)+factorial(10)/factorial(8))/factorial(9)/factorial(4)

#l) #m)
n=10 n=10
(k=seq(1,10,1)) (k=seq(1,10,1))
A=choose(n,k)*factorial(k) A=factorial(k)*choose(n,k)
sum(A) prod(A)
#n)
(n=seq(1,10,1))
A=1/(sqrt(n)+sqrt(n+1))
prod(A)
#a)
data.10<-c(85,74,122,235,111,292,111,211,133,156,79,86)
#b)
length(data.10)
#c) #d)
mean(data.10) max(data.10)
median(data.10) min(data.10)
var(data.10) range(data.10)
sd(data.10)

#e) #f)
sort(data.10) summary(data.10)
sort(data.10,decreasing=TRUE) #ketquatravecacthongtin
#min=74 #max=292
#Q1=85.75
#median=116.5
#mean=141.25
#Q3=169.75
#g) #h)
data.10[data.10>=200] data.10[(data.10>=150)&(data.10<=200)]

#i)
(BPV_10=quantile(data.10, probs = 0.10))
#10%
#79.6
# Ý nghĩa: Khoảng 10% số quan sát không lớn hơn 79.6

#j)
# Tứ phân vị:
(Q_1=quantile(data.10, probs = 0.25))
(Q_2=quantile(data.10, probs = 0.50))
(Q_3=quantile(data.10, probs = 0.75))
# IQR
IQR=Q_3-Q_1
# Ý nghĩa IQR
# Khoảng 50% dữ liệu nằm trong khoảng (Q_1, Q_3)

#k) (CV<-(sd(data.10)/mean(data.10))*100)
#baitap.011
#a.đặt tên là data.11 và sử dụng hàm data.frame
stt<-c(1,2,3,4,5,6,7,8,9,10)
Chieu.Cao<-c(160,170,180,155,172,162,160,168,170,165)
Can.nang<-c(45,70,85,42,67,50,65,58,60,50)
Trinh.do<c("khac","khac","khac","phothong”,…,”daihoc","daihoc","daihoc")
Gioitinh<-c("nu","nam","nam","nu","nam","nu","nam","nu","nam","nu")
data.11<-data.frame(stt,Gioitinh,Chieu.Cao,Can.nang,Trinh.do)
data.11

#b.xuất data.11 sang file text


setwd("E:/Thực Hành Thống Kê")
write.table(data.11,"E:/Thực Hành Thống Kê.txt",sep="t",row.names=FALSE)
save(data.11,file="data.11.txt")
#xuất data.11 sang file excel
setwd("E:/Thực Hành Thống Kê")
write.table(data.11,"E:/Thực Hành Thống Kê.xlsx",sep="t",row.names=FALSE)
save(data.11,file="data.11.xlsx")
#c.tách ra cột Trinh.do
data.11$Trinh.do
#d.tỷ lệ người có trình độ đại học trong khảo sát
length(Trinh.do[Trinh.do=="daihoc"])/length(Trinh.do)
#e.tỷ lệ nữ có trình độ đại học
data.11.nu=data.11[data.11$Giotinh=="nu",]
data.11.nu
dim(data.11.nu)
dim(data.11.nu)[1]
data.11.nu.DH=data.11.nu[data.11.nu$Trinh.do=="daihoc",]
data.11.nu.DH
dim(data.11.nu.DH)
dim(data.11.nu.DH)[1]
#
(Ty.Le_Nu_DH=dim(data.11.nu.DH)[1]/dim(data.11.nu)[1])

#f.chieu cao trung binh, lọc ra có bao nhiêu người lớn hơn chieu cao trung binh
(Chieucao.tb=mean(data.11$Chieu.Cao)) #166.2
data.11[data.11$Chieu.Cao>Chieucao.tb,]
dim(data.11[data.11$Chieu.Cao>=Chieucao.tb,])[1]
#baitap.012
#a.citysale.xls
city_sale_1=read.csv(file=file.choose(), header=TRUE)
city_sale_1
#
city_sale_2=read.csv(file=file.choose(), header=F)
city_sale_2
#CHỌN TRUE VÌ KHÔNG CÓ V1V2V3....
#b.cityrain.txt
city_rain_1=read.table(file=file.choose(), header=TRUE)
city_rain_1
#e.diem.csv
diem_1=read.csv(file=file.choose(), header=TRUE)
diem_1
#c.hanghoa.sav
hang_hoa_1=read.spss(file=file.choose(), header=TRUE)
hang_hoa_1
hang_hoa_2=read.spss(file=file.choose(), header=F)
hang_hoa_2
#chọn true
#baitap0.13

# a) Nhap data đặt tên là bangdiem


MSSV=c("ID1","ID2","ID3","ID4","ID5","ID6","ID7","ID8","ID9","ID10")
HoVaTen = c("AAA","BBB","CCC","DDD","EEE","FFF","GGG","HHH","KKK","LLL")
QT1 = c(5,6,8,7,8,7,5,4,9,5)
QT2=c(7,6,9,7,7,5,6,5,6,5)
GK=c(8,2,6,6,4,9,7,3,5,7)
CK=c(6,4,8,9,9,7,6,5,9,1)
bangdiem=data.frame(MSSV,HoVaTen,QT1,QT2, GK,CK)
bangdiem
#b) Thêm cột trung bình môn vào bảng điểm
bangdiem$TBM=0.1*QT1+0.2*QT2+0.2*GK+0.5*CK
bangdiem
#c) summary(bangdiem$TBM)
var(bangdiem$TBM)
sd(bangdiem$TBM)
#d) Thêm cột kết quả
bangdiem$KetQua=ifelse(bangdiem$TBM>=5, "DAT", "KHONG DAT")
#e) Lọc ra danh sách đạt môn
bangdiem[bangdiem$KetQua=="DAT", ]

#baitap.014
stt<-c(1,2,3,4,5,6,7,8,9,10)
Thu.Nhap<-c(2.1,2.5,2.0,4.1,4.2,4.5,4.0,11.0,8.0,9.0)
Gioi.Tinh<-c("nu","nam","nam","nu","nam","nu","nam","nu","nam","nu")
Trinh.do<c("khac","khac","khac","phothong”,…,”daihoc","daihoc","daihoc")
data.14<-data.frame(stt,Thu.Nhap,Gioi.Tinh,Trinh.do)
data.14
#a. mã hóa nam=1, nu=0
data.14$GT[Gioi.Tinh=='female'] <- 0
data.14$GT[Gioi.Tinh=='male'] <- 1
#b. mã hóa biến trình độ daihoc=2, phothong=1, khac=0
data.14$TĐ[Trinh.do=='daihoc'] <- 2
data.14$TĐ[Trinh.do=='phonthong'] <-1
data.14$TĐ[Trinh.do=='khac'] <- 0
#c.Sắp xếp dữ liệu tăng dần và giảm dần theo thu nhập.
sort(data.14)
sort(data.14,decreasing=TRUE)

#d.Rút trích dữ liệu


#d1.Xuất ra phần tử ở vị trí dòng 8, cột 2
print(data[8, 2])
#d2.Trích ra dòng 8 và trích ra cột 2
print(data[8, ])
print(data[, 2])
#d3.Rút ra toàn bộ dữ liệu ngoại trừ cột 1
data_ruttrich <- data[, -1]
#d4.Rút ra cột thu nhập và cột trình độ
data_ruttrich2 <- data[, c("ThuNhap", "TrinhDo")]
#d5.Rút trích 2 tập dữ liệu với điều kiện giới tính nam; nữ riêng
data_nam <- subset(data, GioiTinh == "Nam")
data_nu <- subset(data, GioiTinh == "Nữ")
#d6.Rút trích tập dữ liệu với điều kiện giới tính nữ và trình độ đại học
data_nu_daihoc <- subset(data, GioiTinh == "Nữ" & TrinhDo == "Daihoc")
#d7.Rút trích tập dữ liệu với điều kiện giới tính nữ hoặc trình độ đại học
data_nu_hoac_daihoc <- subset(data, GioiTinh == "Nữ" | TrinhDo == "Daihoc")
#d8.Rút trích tập dữ liệu với điều kiện giới tính nữ và có thu nhập từ 3 triệu đến 5 triệu đồng
data_nu_thunhap <- subset(data, GioiTinh == "Nữ" & ThuNhap >= 3000000 & ThuNhap <=
5000000)
#e.Tạo biến mới đổi đơn vị tiền Việt Nam sang tiền USD
data$ThuNhap_USD <- data$ThuNhap / 24355

#baitap0.15
spam.type=read.csv(file=file.choose(),header=TRUE)
spam.type
#a. BIỂU ĐỒ CỘT, xem bieu do cot trang 45,46,47, theo biến Percent,

read.csv(file.choose())
type = c("Adult","Financial","Health","Leisure","Products","Scams")
Percent = c(14.5,16.2,7.3,7.8,21.0,14.2)
barplot(spam.type$Percent, col = rainbow(6), names.arg = type, xlab = "Spam Types",ylab =
"percent(%)", main = "The distribution of the types of spam")
#b.BIỂU ĐỒ CỘT TỪ CAO ĐẾN THẤP
percent_sort=sort(spam.type$Percent, decreasing=FALSE)
percent_sort
barplot(percent_sort,col=rainbow(6),names.arg=type,xlab="spam.type",ylab="Percent(%)",
main="The distribution of the types of spam")
#c.BIỂU ĐỒ TRÒN
pie(percent,col=rainbow(6), labels = type, main = 'The distribution of the type of spam ')
#Dán thêm số liệu của biểu đồ tròn
phantram = paste( type, Percent , sep = " ")
phantram
pie(percent,col=rainbow(6), labels = phantram , main = “The distribution of the type of spam”)

data.16=c(141,158,112,153,134,95,96,78,148,172,200,271,103,172,359,145,147,255)
#a.tb,tv,ps,dolechchuan,q1,q3,IQR
mean(data.16)
median(data.16)
sd(data.16)
var(data.16)
IQR(data.16)
#bach phan vi thu nhat
quantile(data.16, probs=0.25)
#bach phan vi thu 3 quantile(data.16, probs=0.75)
#b.bieu do than la
stem(data.16)
#c.BIỂU ĐỒ HỘP
boxplot(data.16, col=c('blue'))

data=read.table(file.choose(), header = T)
data
data_sort = data[order(data$Damage),] #Sắp xếp dữ liệu lại theo biến Damage tăng dần
data_sort
#a. tail(data_sort,5) # Lấy 5 giá trị cuối (lớn nhất)
head(data_sort,5) # Lấy 5 giá trị đầu (nhỏ nhát)
### Lưu ý là bạn có thể sắp xếp dữ liệu giảm dần.
#b.VẼ BIỂU ĐỒ HISTOGRAM
hist(data$Damage, breaks = c(0,10,20,30,40,50,60,70,80,90))

#a. Dùng hàm table, vẽ biểu đồ thể hiện tần số bằng cột và bằng dòng

cholesterol=read.table(file=file.choose(),header=T)
cholesterol
tan_So=table(cholesterol$sex)
tan_So
barplot(tan_So) # thêm màu, tên,...
#b. dung hàm cut, vẽ biểu đồ cột thể hiện có bnhieu bệnh nhân trong từng độ tuổi
chianhom=cut(cholesterol$age,breaks =c(40,50,60,70,80),right=T)
sobenhnhan_dotuoi=cut(cholesterol$age,breaks =c(40,50,60,70,80),right=T,
include.lowest=T)
tanso_dotuoi=table(sobenhnhan_dotuoi)
tanso_dotuoi
barplot(tanso_dotuoi) # thêm màu, tên,...
#c.vẽ biểu đồ tần số của độ tuổi bằng biểu đồ tròn
pie(table(chianhom_1)) # Tự thêm mắm dậm muối vào
#d. hist(data$age) # Tự thêm mắm dậm muối vào

CÁCH NHÂP DỮ LIỆU CÓ TẦN SỐ


#BaiTap 0.0.25
data.0.0.25 = rep(c(275,325,375,425),c(10,25,35,20))

data.0.0.25
#a hoc_luc<-c("Khá","Giỏi","Khá","Khá","Trung bình",....,"Giỏi")
tanso <- table(hoc_luc)
tansuat<-prop.table(tanso)
#b. ty_le_sv_gioi<-tanso["Giỏi"]/length(hoc_luc)
#b.cách 2 tansuat["Giỏi"]

#baitap0.31
#nhap du lieu de bai
data_31=c("G","O","V",…..,"A","G")
data_31
#a.tan so va tan suat
length(data_31)
(tanso=table(data_31))
(tansuat=prop.table(tanso)) A G O P V
0.12 0.20 0.38 0.04 0.26 =>đưa ra nhận xét
#b.ve bieu do cot va bieu do tron
#biểu đồ cột #biểu đồ tròn
barplot(tanso, col=rainbow(5)) pie(tansuat, col=rainbow(5))
# Nhận xét:
# Có 5 mức độ hài lòng
# Đa số khách hàng đánh giá các món ăn là tuyệt diệu (38%)
# Khách hàng đánh giá món ăn dở tệ chiếm tỷ lệ ít nhất (4%)

#a.dat ten Diem_QT1


Diem_QT1=rep(c(4,5,6,7,8,9,10),c(3,7,11,9,6,7,2))
Diem_QT1
#b.tinh tb,tv,ps,dlc,min,max,Q1,Q2,Q3
# trung binh # trung vi
mean(Diem_QT1) median(Diem_QT1)
# phuong sai # do lech chuan
var(Diem_QT1) sd(Diem_QT1)
# min # max
min(Diem_QT1) max(Diem_QT1)
# Q1
quantile(Diem_QT1,probs = 0.25)
# Q2
quantile(Diem_QT1,probs = 0.5)
# Q3
quantile(Diem_QT1,probs = 0.75)
#sumary tính ra giá trị gì? (neu nguoita keu tinh them dotraigiua,....thi tinh them)
summary(Diem_QT1)
#nhận xét: biểu đồ trên lệch PHẢI
hist(Diem_QT1)
#cau 31 dung barplot, cau 32 dung hist de nhan xet
luong<-c(99, 105, 106 ,102, 102, 93, 109, 106,77 ,91 ,103 ,118 ,97 ,100, 107 ,103,94, 109 ,100,
98 ,84 ,92, 98 ,110,94 ,104, 98 ,123 ,102, 99, 100 ,107)
#a.VẼ BIỂU ĐỒ THÂN LÁ, nhận xét
stem(luong)
#miền dữ liệu 77-123
#dữ liệu tập trung nhiều từ 90-110
#hình dạng phân phối khá đối xứng
#b. bieu do histogram, nhận xét
hist(luong,col=rainbow(6))
#bieu do dang doi xung

Material=c("Food scraps","Glass","Metals","Paper, paperboard","Plastics","Rubber, leather,


textiles","Wood","Yard trimmings","Other")
Weight=c(25.9,12.8,18.0,86.7,24.7,15.8,12.7,27.7,7.5)
data.34=data.frame(Material,Weight)
data.34
#a. Tính tỷ lệ phần trăm và thêm vào cột thứ 3
data.34$ty_le=data.34$Weight.Millon.Tons/sum(data.34$Weight.Millon.Tons)
data.34
#b. biểu đồ cột dựa vào tỷ lệ ở câu a
barplot(data.34$ty_le, names.arg = Material, col=rainbow(9))
# biểu đồ tròn dựa vào tỷ lệ ở câu a
pie(data.34$ty_le,col=rainbow(9))
#Nhan xet
#Rac duoc chia co tat ca 9 loai
#Cac loai rac co ty le khong deu
#Rac Paper chiem ti le nhieu nhat 37,4%
#Cac loai rac khac chiem ti le it nhat 3,2%
#c. sắp xếp dữ liệu giảm dần theo tỷ lệ %

#doc du lieu
pig=read.table(file=file.choose(), header=TRUE)
pig
#a.vẽ hist và đường mật độ thời gian sống (lines)
hist(pig$survival,labels = T,col = "lightblue",main = "Histogram of survival of pig",
xlab = "survival",probability = T)
lines(density(pig$survival),col="red",lwd=2)
#nhan_Xet: Hình dạng phân phối: lệch sang phía bên trái
#b
mean(pig$survival)
median(pig$survival)
var(pig$survival)
sd(pig$survival)
#c. summary(pig$survival)
#d. boxplot(pig$survival,col = "green",xlab="guinea pig")
# Trong câu d của em, nếu muốn BIỂU ĐỒ HỘP NẰM NGANG, em thêm vào
horizontal = TRUE
# Bai tap 0.0.20 BIỂU ĐỒ PATERO
# Các bạn cần cài package sau vào máy 1 lần
install.packages("qcc")
#Các lần sau không cần cài, chỉ cần gọi:
library(qcc)
QG=c("Af", "Asi", "Aus", "Eu", "NAmer", "SAmer")
So_tauluon=c(17,315,22,413,643,45)
data_20=rep(QG,So_tauluon)
data_20=table(data_20)
pareto.chart(data_20)

File Excel phải dùng read.csv()


File txt phải dùng read.table()

You might also like