Làm Việc Với Dataframe Trong R - BIS

Làm việc với dataframe trong R

chuc1803@gmail.com

Data frame là đối tượng được dùng phổ biến nhất trong R để lưu trữ dữ liệu. Một data frame cũng giống như một ma trận (matrix) có dòng (rows) và cột (columns). Tuy nhiên không giống như ma trận, các cột trong data frame có tên gọi và kiểu dữ liệu khác nhau.

Tạo mới một data frame (data.frame)

id=c(1,2,3,4) # Tạo vector id

name=c("Chuc", "Khoa", "Nguyet","Minh") # tạo vector name

sex=c("Male", "Male", "Female", "Male") # tạo vector sex

data=data.frame(id,name,sex) # tạo data frame có tên data gồm 3 cột

Tạo trực tiếp một data frame như sau:

person=data.frame(id=c(1,2,3),name=c("Chuc", "Khoa", "Nguyet"), sex=c("Male","Male","Female"))

Truy xuất dữ liệu trong data frame

Truy xuất dữ liệu tròn data frame giống như truy xuất dữ liệu trong ma trận thông qua chỉ số dòng và cột.

data[1,2] # dòng 1 cột 2

data[1,] # dòng thứ 1, tất cả các cột

data[,2] hoặc data["name"] # thông tin cột thứ 2 (tất cả các dòng)

data[1:2,2:3] # dòng 1 đến 2, cột 2 đến 3

data[sex=="Male",] # hiển thị các người có giới tính Nam

#Thêm cột mới vào data frame (DF$Col)

data$age=c(40,12,37,39) # thêm cột age vào data frame data

Trích xuất dữ liệu từ data frame (subset)

male=subset(data,sex=="Male") # trích ra những người là Nam

maleadult=subset(data,sex=="Male" & age>20) # trích ra những người là nam tuổi >20

Chọn ngẫu nhiên các phần từ trong data frame (sample)

rand=sample(nrow(data),2, replace=FALSE) # tạo 2 (hoặc n) giá trị ngẫu nhiên từ 1 đến số dòng (nrow) trong data frame data, không lặp lại

dataSample=data[rand,] # trích ra các dòng dữ liệu theo các giá trị ngẫu nhiên

data1=data[-rand,] # các dòng dữ liệu còn lại

Sắp xếp dữ liệu trong data frame (order)

dat1=data[order(age),] # xếp tăng dần theo cột age

dat2=data[order(-age),] # xếp giảm dần theo cột age

print(data[order(age),]) # không tạo biến mới, chỉ xem dữ liệu xếp tăng dần theo age

Tạo biến mới trong data frame bằng coding

#tạo cột gender trong data frame data, nhận giá trị là 1 nếu sex=Male và 0 nếu sex= Female

data$gender[sex=="Male"]=1

data$gender[sex=="Female"]=0

Chuyển kiểu dữ liệu (as.character, as.numeric)

Để thực hiện chuyển đổi kiểu dữ liệu trong R ta sử dụng as.character(var) để chuyển đối tượng var thành ký tự. Để chuyển sang kiểu dữ liệu số ta sử dụng hàm as.numeric(var)

Ví dụ: age1=as.character(age) bây giờ age1 có kiểu dữ liệu là character và ta không thể thực hiện các phép tính số học trên đối tượng age1.

Hợp nhất dữ liệu (merge)

id=c(1,2,3) # tạo vector id gồm 3 phần tử

sex=c("Male", "Male", "Female") #tạo vector sex

data1=data.frame(id,sex) # tạo data frame data1 gồm 2 cột id và sex

id=c(1,2,3,4) # tạo vector id gồm 4 phần tử

age=c(30,34,37,40)

data2=data.frame(id,age) # tạo data frame data2

data=merge(data1,data2, by ="id") # hợp nhất 2 data frame

dataAll=merge(data1, data2, by="id", all.x = T, all.y=T) # hợp nhất 2 data frame với tất cả các dòng (xem kết quả)

Hoán chuyển dữ liệu (reshape)

Chuyển cột thành dòng ( melt)

id=c(1,2,3)

age=c(20,34,29)

smokeDay1=c(7,15,24) #Number of cigarettes smoked per day

smokeDay2=c(9,12,27)

smokeDay3=c(12,17,19)

data=data.frame(id,age,smokeDay1,smokeDay2,smokeDay3)

data1=melt(data, id=c("id","age"), measure.vars=c("smokeDay1", "smokeDay2","smokeDay3"))

Chuyển dòng thành cột (cast)

data2= cast(data1,id+age~variable)

Từ khóa » Hàm Order Trong R