R語言實戰—04數據基本管理
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=TRUEna.omit( )4.6 日期值
以字元串的形式輸入到R中,然後轉化為以數值形式存儲的日期變數。
語法:as.Date(x,"input_format")
- x是字元型數據。
- input_format則給出了用於讀入日期的格式。
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技巧】- 辦公常用的十大函數@(二)日期時間類函數