Excel能處理的數(shù)據(jù)是有上限的(2007版本是256列X1048576行)肚豺。如果遇到大型數(shù)據(jù)惦辛,例如APP運(yùn)行后臺的一些數(shù)據(jù)肚医,excel是處理不了的。這個時候就需要用sql羹膳,R語言或者python來整理我們需要的數(shù)據(jù)睡互。
其實(shí),傳統(tǒng)的關(guān)系型數(shù)據(jù)庫可以用sql來完成這些工作陵像。如果你會寫sql就珠,那你可以直接在數(shù)據(jù)庫平臺上操作,導(dǎo)出自己需要的數(shù)據(jù)醒颖,如果不會妻怎,那就要求助于DBA。然而泞歉,DBA一般不太清楚數(shù)據(jù)分析師的需求逼侦,也沒空理會數(shù)據(jù)分析師的需求(比如你要求他們按照A項(xiàng)排序后又按照B項(xiàng)排序),而且交流成本比較高……所以腰耙,數(shù)據(jù)分析師可以要求他們導(dǎo)出“全體”的數(shù)據(jù)庫(或者自己連接數(shù)據(jù)庫導(dǎo)出數(shù)據(jù))榛丢,然后自己來了解數(shù)據(jù)的結(jié)構(gòu)和數(shù)據(jù)的類型,并進(jìn)行簡單篩選挺庞、排除晰赞、匯總工作。
如果是分布式的數(shù)據(jù)庫选侨,那就需要用HSQL掖鱼,Spark等其他工具技巧來獲取數(shù)據(jù)。以后有機(jī)會再介紹吧援制。這里主要是介紹如何用R語言來對數(shù)據(jù)進(jìn)行初步的了解戏挡。
1.設(shè)置工作目錄??
了解當(dāng)前目錄:getwd()
設(shè)置工作目錄:setwd("F:/R語言工作目錄")
注意(1)斜杠的方向,(2)文件夾要先建好。
默認(rèn)目錄一般都在C盤晨仑,因此最好在其他盤設(shè)置工作目錄增拥,將數(shù)據(jù)保存在其他硬盤,以免使C盤空間越來越小寻歧。如果你處理的是幾十KB的數(shù)據(jù),放在C盤無所謂秩仆,但如果處理幾十MB的數(shù)據(jù)码泛,反復(fù)操作你的工作目錄可能越來越大。
2.讀取數(shù)據(jù)文件
推薦CSV格式
data1008? <- read.csv("kunming.csv",header=T)
data1009? <-?read.table("kunming.txt",header=F)
其他參見?https://blog.csdn.net/tb3039450/article/details/52557200
3.列命名
names(data1008) <- c("MAC","frequ")
名稱不能超過列數(shù)
4.數(shù)據(jù)描述
head(data1008) //主要是查看數(shù)據(jù)導(dǎo)入過程是否除了差錯
str(data1008) //幫助你了解dataframe里面有的數(shù)據(jù)類型
summary(data1008)?//幫助你了解數(shù)據(jù)分布和缺失值
5.數(shù)據(jù)類型轉(zhuǎn)換
data1008$MAC <- as.character(data1008$MAC)
as.complex(x)
as.numeric(x)或者as.double(x)
as.integer(x)
as.logical(x)
as.date(X)
說明:上述函數(shù)表示澄耍,對于每個基本的數(shù)據(jù)類型噪珊,都有一個函數(shù)用來把其它數(shù)據(jù)類型的值轉(zhuǎn)換為自己數(shù)據(jù)類型晌缘。轉(zhuǎn)換成功,則得到相應(yīng)的結(jié)果痢站;反之磷箕,則得到NA值。
一般阵难,字符型都會被默認(rèn)為是factor岳枷,必然要轉(zhuǎn)換成character才可以進(jìn)行各種操作。
【待補(bǔ)充呜叫,R語言數(shù)據(jù)類型】
6.取某幾列或某幾行
etimetrans <- data1008[,"ETIME"]
data1008[1,3]? ?#data1008數(shù)據(jù)框的第1行第3列
data1008[1:2]? ? #data1008數(shù)據(jù)框的1到2列
data1008[c('age','status')]? ?#data1008數(shù)據(jù)框中的age和status列
data1008$status? ? ?#patientdat數(shù)據(jù)框中的status列
取某幾行
data1<-data1008[2:4,]
data2<-data1008[10:16,]
刪除行
A <- A[-1,] //刪除第一行
A <- A[,-2]//刪除第二列
mydf <- subset(mydf, select = -X ) //刪除mydf數(shù)集中X這一列
7.排序
dataorder <- data1008[order(-data1008[,4]),]? //按照第4列排序
data1008$ID? <- order(-data1008$res)? //按照res排序
a[order(a$a1,-a$a2),] //先按照a1升序序空繁,再按照a2降序
8.用0替換缺失值
data1008[is.na(data008)] <- 0
9.插入幾行
data1<- data.frame(x1=runif(10),x2= runif(10),x3= runif(10))
row<- c(1, 1, 1)
data2 <- rbind(data1[1:5,], row, data1[6:nrow(data1), ])
插入幾列
y<-1:4
data1 <- data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8),x3=c(11,12,13,14),x4=c(15,16,17,18))
data2 <- cbind(data1[,1:2],y,data1[,3:ncol(data1)])
10.篩選數(shù)據(jù)
selectresult <- subset(df1,name=="aa") //選出符合某一條件的數(shù)據(jù)
selectresult <- subset(df1,a>5)?//選出符合某一條件的數(shù)據(jù)
11.兩組數(shù)據(jù)求交集【未完待續(xù)】
非常重要。因?yàn)槟憬?jīng)常需要合并或者關(guān)聯(lián)兩個表朱庆。
key是兩個表都要有的一列盛泡。
x <- merge(a,b,by="key",all=FALSE)#內(nèi)連接,兩個表實(shí)現(xiàn)與的操作娱颊,只顯示兩個表都有的數(shù)值
x <- merge(a,b,by="key",all=TRUE)#外連接傲诵,兩個表實(shí)現(xiàn)并的操作,如果有個表的數(shù)值沒有顯示為空
a <- merge(a,b,by="key",all.x=TRUE)#左連接
a <- merge(a,b,by="key",all.y=TRUE)#右連接
可以參考?http://www.reibang.com/p/148a399b61d3
12.數(shù)據(jù)匯總【未完待續(xù)】
往往匯總后的數(shù)據(jù)才是數(shù)據(jù)分析師數(shù)據(jù)分析的起點(diǎn)箱硕。
13.單列頻次分布【未完待續(xù)】
14.因變量和自變量作圖【未完待續(xù)】
15.隨機(jī)抽樣【未完待續(xù)】