標籤:

R語言實戰—04數據基本管理

本章主要講解了數據基本知識,包括如何創建新的變數,R存儲缺失值和日期值的方法,數據集的合併,以及如何從數據集中取子集的方法。

4.2 創建新的變數

格式:變數名 <- 表達式

eg.mydata<-data.frame(x1 = c(2, 2, 6, 4), x2 = c(3, 4, 2, 8))mydata$sumx <- mydata$x1 + mydata$x2mydata$meanx <- (mydata$x1 + mydata$x2)/2attach(mydata)mydata$sumx <- x1 + x2mydata$meanx <- (x1 + x2)/2detach(mydata)mydata <- transform(mydata,sumx = x1 + x2,meanx = (x1 + x2)/2)

4.3 變數的重編碼

根據同一個變數/或其他變數的現有值創建新值的過程。

常用的邏輯運算符:

4.4 變數的重命名

交互方式:

fix(leadership),來調用一個互動式的編輯器,單擊變數名,然後修改。

編程方式:

通過names( )函數來重命名變數。

eg. names(leadership[2] <- "testDate"

plyr包中使用rename( )函數,修改變數名。

格式如下:

rename(dataframe,c(oldname="newname",oldname="newname",…)

4.5 缺失值

缺失值符號:NA(Not Available)

函數is.na( )可以檢測缺失值是否錯在。

eg.y <- c(1,2,3,NA)is.na(y)c(FALSE,FALSE,FALSE,TRUE)

缺失值相應的位置被寫為TRUE,不是缺失值的位置則為FALSE。

4.5.1重編碼某些值為缺失值

eg.leadship$age[leadership$age ==99] <- NA

4.5.2在分析中排除缺失值

na.rm=TRUE

na.omit( )

4.6 日期值

以字元串的形式輸入到R中,然後轉化為以數值形式存儲的日期變數。

語法:as.Date(x,"input_format")

  • x是字元型數據。
  • input_format則給出了用於讀入日期的格式。

日期值的默認輸入格式為:yy-mm-dd

mydates <- as.Date(c("2007-06-22","2004-02-13"))

Sys.Date( )可以返回當天的日期。

date( )返回當前的日期和時間。

format(x,format="output_format")來輸出指定格式的日期值,並且可以提取日期值中的某些部分。

R的內部在存儲日期時,是使用自1970年1月1日以來的天數表示的,更早的日期則表示為負數。

eg.startdate <- as.Date("2004-02-13")enddate <- as.Date("2011-01-22")days <- enddate - startdatedaysTime differeence of 2535 days

difftime( )計算時間間隔

eg. > today <- Sys.Date() > dob <- as.Date("1956-10-12") > difftime(today, dob, units="weeks") Time difference of 3033 weeks

4.6.1將日期轉換為字元型變數

strDates <- as.character(dates)

4.6.2更進一步

help(as.Date)和help(strftime)

4.7類型轉換

名為is.datatype( )這樣的函數返回TRUE或FALSE,as.datatype( ) 函數則將其參數轉換為對應的類型。

4.8 數據排序

order( )函數對一個數據框進行排序。默認為升序排列,加"-"為降序排列。

eg.newdata <- leadership[order(leadership$age),]

按各行依經理人的年齡升序排序。

4.9 數據集的合併

4.9.1向數據框添加列

merge( )橫向合併兩個數據框。

格式如下:total <- merge(dataframeA, dataframeB, by="ID")

cblind( )直接橫向合併兩個矩陣或數據框,每個對象必須擁有相同的行數,以同順序排序。

格式如下:total <- cbind(A,B)

4.9.2向數據框添加行

rbind( )函數縱向合併兩個數據框

格式:total <- rbind(dataframeA,dataframeB)

注意:兩個數據框必須擁有相同的變數,不過順序不必一定相同。

4.10數據集取子集

4.10.1選入(保留)變數

eg.newdata <- leadership[,c(6:10)]

eg.myvars <- c("q1","q2","q3","q4","q5")newdata <- leadership[myvars]

eg.myvars <- paste("q",1:5, sep="")newdata <- leadership[myvars]

4.10.2剔除(丟棄)變數

eg.myvars <- names(leadership) %in% c("q3","q4")newdata <- leadership[!myvars]

eg.newdata <- leadship[c(-8,-9)]

用"-"減號剔除那一行。

eg.leadership$q3 <-leadship$q4 <-NULL

將q3,q4設為了未定義(NULL)

4.10.3選入觀測

eg.leadership$date <- as.Date(leadership$date,"%m%d%y")startdate <- as.Date("2009-01-01")enddate <-as.Date("2009-10-31")newedata <-leadership[which(leadership$date >= startdate &leadership$date <=enddate),]

4.10.4subset( )函數

subset( )函數可以簡單的選擇變數和觀測。

eg.newdata <- subset(leadership,age >=35 | age < 24, select= c(q1,q2,q3,q4))newdata <- subset(leadership, gender=="M" & age >25, select=gender:q4)

4.10.5 隨機抽樣

sample( )函數能夠從數據集中抽取大小為n的一個隨機樣本。

eg. mysample <- leadership[sample(1:nrow(leadership), 3, replace=FALSE),]

  • 第一個參數是一個由要從抽樣的元素組成的向量。
  • 第二個參數是要抽取的元素數量。
  • 第三個參數表示無放回抽樣。

2017年04月02日

作者:壹亮3278(微信號:yiliang3278),移動互聯網產品設計、產品經理,數據分析的學習者。不斷自我迭代,自我升級,希望和知識愛好者共同進步,讓我們用成長去遇見美好的未來!!!

————
「自律是成功的基石。」————

----------------------------------------------------------------------------------------------------------

《數據分析學習之路系列》系列

大數據之數據分析精進之路:起跑 - 知乎專欄

00-R語言的認識、下載和安裝 - 知乎專欄

01-R語言入門 - 知乎專欄

02-創建數據集 - 知乎專欄

第二講 數據結構入門實戰練習 - 知乎專欄

03圖形初階 - 知乎專欄

推薦閱讀:

像2017102這樣正反念一樣的日期常見嗎?
用英語表達日期和時間,你會多少?
【Excel技巧】- 辦公常用的十大函數@(二)日期時間類函數

TAG:日期 | R | 數據 |