manager<-c(1,2,3,4,5)
date<- c("10/24/08","10/28/08","10/1/08","10/12/08","5/1/09")
country<-c("us","us","uk","uk","uk")
gender<-c("m","f","f","m","f")
age<-c(32,45,25,39,99)
q1<-c(5,3,3,3,2)
q2<-c(4,5,5,3,2)
q3<-c(5,2,5,4,1)
q4<-c(5,5,5,na,2)
q5<-c(5,5,2,na,1)
leadership<-data.frame(manager,date,country,gender,age,q1,q2,q3,q4,q5,stringsasfactors=false)
#常用算術操作說明
# + 加法
# - 減法
# * 乘法
# / 除法
# ^或** 求冪
# x%%y 求模
# x%/%y 整除
#常用比較操作
# < 小於
# <= 小於等於
# > 大於
# >= 大於等於
# == 等於比較
# != 不等比較
# x|y x或y
# x&y x和y
# istrue(x) 測試x是否為true
#操縱日期
# %d 日期
# %a 星期
# %a 星期(非縮寫)
# %m 月份(數字)
# %b 縮寫的月份(英文)
# %b 月份(非縮寫英文)
# %y 年份
# %y 四位年份
mydate<- as.date(c("2007-06-22","2004-02-13")) #字串轉日期物件
datestr<- c("2007-06-22","2004-02-13")
mydate2<- as.date(datestr,"%m/%d/%y") #字串轉日期物件
sys.date() #獲得當前日期
date() #獲取當前日期和時間
strd <- as.character(sys.date())
#熟悉資料型別的轉換
# is.numeric() as.numeric()
# is.character() as.character()
# is.vector() as.vector()
# is.matrix() as.matric()
# is.data.frame() as.data.frame()
# is.factor() as.factor()
# is.logical() as.logical()
#變數的建立和重編碼
#建立新變數
mydata<-data.frame(x1=c(2,2,6,4),x2=c(3,4,2,8))
#method1:
mydata$sumx<-mydata$x1 + mydata$x2
mydata$meanx<-(mydata$x1 + mydata$x2)/2
#method2:
attach(mydata)
mydata$sumx<- x1 + x2
mydata$meanx <- (x1+x2)/2
detach(mydata)
#method3:
mydata <- transform(mydata,sumx=x1+x2,means=(x1 + x2)/2)
#method4:
leadership <- within(leadership,)
#重編碼: 變數重新賦值
leadership$age[leadership$age == 99] <- na #將年齡為99的人員資料置為空
leadership$age[leadership$age < 30] <- "younger" #將年齡小於30的置為yonger
#變數重新命名
#rename(datafarme,c(oldname="newname",oldname="newname",...))
library(reshape)
leadership<-rename(leadership,c(manager="managerid",date="testdate"))
#也可以
names(leadership)[2]<-"testdata2"
leadership
names(leadership) #檢視有哪些變數
#資料集排序、合併、提取
#排序newdata<- leadership[order(leadership$age),] #排序 預設是公升序
#降序必須這麼寫
attach(leadership)
newdata<-leadership[order(-age),]
detach(leadership)
#集合合併
total <- merge(dataframea,dataframeb,by=c("id","***"))
total <- cbind(a,b) # 直接合併資料庫或矩陣
#提取newdata<- leadership[,c(6:10)]
#或myvars <-c("q1","q2")
newdata <- leadership[myvars]
#變數的選入和丟棄
#選擇變數
myvars<- names(leadership) %in% c("q3","q4") #找打名字包含 q3\q4的變數
#變數丟棄
newdata<- leadership[!myvars] #!表示邏輯非
newdata
#值的缺失檢查
y<-c(2,3,5,na)
is.na(y) #return : c(false,false,false,true)
#na是不可比較的,即使是同其他缺失值也如此
#計算時缺失值的排除
x<-c(1,2,na,3)
y<-sum(x,na.rm=true)
#去掉缺失項(整個變數都會去掉)
leadership
newdata<-na.omit(leadership)
newdata
利用R語言進行基本資料管理
建立leadership資料框 manager c 1,2,3,4,5 date c 10 24 08 10 28 08 10 1 08 10 12 08 5 1 09 country c us us uk uk uk gender c m f f m f age c 32,45,25,39,99 ...
R語言實戰學習筆記(三)基本資料管理
在乙個資料框裡面加入新的變數的方法有三種,第一種是直接 引用新增,一種是用attach detach 第三種是用transform 函式。具體例子如下 mydata裡面已經存在x1和x2兩個變數 方法一 mydata sumx mydata x1 mydata x2 mydata meanx myd...
第四章 基本資料管理
將leadship資料集中經理人的年齡變數age重編碼為類別型變數 leadership within fix leadship 互動的方式修改變數的名稱 reshape內的rename函式 ibrary reshape leadership c manage mamanageid data tes...