99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀R語言數(shù)據(jù)集合并、數(shù)據(jù)增減、不等長(zhǎng)合并
R語言數(shù)據(jù)集合并、數(shù)據(jù)增減、不等長(zhǎng)合并
2017-04-20
收藏

R語言數(shù)據(jù)集合并、數(shù)據(jù)增減、不等長(zhǎng)合并

數(shù)據(jù)選取與簡(jiǎn)單操作:


一、數(shù)據(jù)合并

1、merge()函數(shù)
最常用merge()函數(shù),但是這個(gè)函數(shù)使用時(shí)候這兩種情況需要注意:
1、merge(a,b),純粹地把兩個(gè)數(shù)據(jù)集合在一起,沒有溝通a、b數(shù)據(jù)集的by,這樣出現(xiàn)的數(shù)據(jù)很多,相當(dāng)于a*b條數(shù)據(jù);
2、merge函數(shù)是匹配到a,b數(shù)據(jù)集的并,都有的才匹配出來,如果a、b數(shù)據(jù)集ID不同,要用all=T(下面有all用法的代碼)。
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
    #橫向合并  
    ID<-c(1,2,3,4)  
    name<-c("Jim","Tony","Lisa","Tom")  
    score<-c(89,22,78,78)  
    student1<-data.frame(ID,name)  
    student2<-data.frame(ID,score)  
    total_student<-merge(student1,student2,by="ID")  #或者rbind()  
    total_student 
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
    #縱向合并  
    ID<-c(1,2,3)  
    name<-c("Jame","Kevin","Sunny")  
    student1<-data.frame(ID,name)  
    ID<-c(4,5,6)  
    name<-c("Sun","Frame","Eric")  
    student2<-data.frame(ID,name)  
    total<-cbind(student1,student2)  
    total 
merge的all用法
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片

    > id=c("1","2","3")  
    > M=c("7","2","3")  
    > ink2=data.frame(id,M)  
    >   
    > merge(ink1,ink2,by="id",all=T)  #所有數(shù)據(jù)列都放進(jìn)來,空缺的補(bǔ)值為NA  
      id    R    M  
    1  1    9    7  
    2  2    7    2  
    3  4    9 <NA>  
    4  3 <NA>    3  
    > merge(ink1,ink2,by="id",all=F)  #默認(rèn),只取兩者的共有的部分  
      id R M  
    1  1 9 7  
    2  2 7 2 
其中,all=T代表全連接,all.x=T代表左聯(lián)結(jié);all.y=T代表右連接
2、dplyr包
dplyr包的數(shù)據(jù)合并,
一般用left_join(x,y,by="name")  以x為主,y中匹配到的都放進(jìn)來, 但,y中沒有的則不放過來。
需要這個(gè)x數(shù)據(jù)集是全集,比較大。


3、paste函數(shù)
生成一長(zhǎng)串字符向量。
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
    paste(c("X","Y"),1:10,sep="")      #"X”,"Y"是長(zhǎng)度為2的字符向量,1:10 長(zhǎng)度為10的向量。命令是讓這兩個(gè)向量粘合在一起生成新的字符串向量,粘合后的新字符之間沒有間隔。 
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片

    #—————————paste中seq與collapse區(qū)別————————————————————  
    a = c(1, 2, 3, 4, 5)  
    names(a) = c('m', 'n','o', 'p', 'q')  
    # 主要是區(qū)分使用sep和collapse  
    b = paste(a, names(a), sep = "/")          #不同向量合并在一起,但是還是各自向量  
    c = paste(b, collapse = ",")               #不同向量合并在一起,但是變成一個(gè)向量  
    mode(b) #變量類型  
    mode(c) 
4、cbind和rbind函數(shù)
cbind()和rbind(),cbind()按照縱向方向,或者說按列的方式將矩陣連接到一起。
rbind()按照橫向的方向,或者說按行的方式將矩陣連接到一起
rbind/cbind對(duì)數(shù)據(jù)合并的要求比較嚴(yán)格:合并的變量名必須一致;數(shù)據(jù)等長(zhǎng);指標(biāo)順序必須一致。相比來說,其他一些方法要好一些,有dplyr,sqldf中的union
5、sqldf包
利用SQL語句來寫,進(jìn)行數(shù)據(jù)合并,適合數(shù)據(jù)庫熟悉的人,可參考:
R語言︱ 數(shù)據(jù)庫SQL-R連接與SQL語句執(zhí)行(RODBC、sqldf包)
二、數(shù)據(jù)增減
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
    x=x[,-1]  #這個(gè)就代表,刪除了x數(shù)據(jù)集中第一列數(shù)據(jù) 
或用dplyr包中的mutate函數(shù)
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
    a=mutate(Hdma_dat,dou=2*survived,dou4=4*survived)   
    Hdma_dat$dou=a$dou  
    Hdma_dat$dou4=a$dou4   #兩個(gè)新序列,加入到Hdma數(shù)據(jù)集匯總 
篩選變量服從某值的子集
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
    subset(airquality, Temp > 80, select = c(Ozone, Temp))  
    subset(airquality, Day == 1, select = -Temp)  
    subset(airquality, select = Ozone:Wind) 

三、數(shù)據(jù)縱橫加總
R使用rowSums函數(shù)對(duì)行求和,使用colSums函數(shù)對(duì)列求和。
四、不等長(zhǎng)合并
1、plyr包
rbind.fill函數(shù)可以很好將數(shù)據(jù)進(jìn)行合并,并且補(bǔ)齊沒有匹配到的缺失值為NA。
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
    #————————————————————————————不等長(zhǎng)合并  
    #如何解決合并時(shí)數(shù)據(jù)不等長(zhǎng)問題——兩種方法:do.call函數(shù)以及rbind.fill函數(shù)(plyr包)  
    #rbind.fill函數(shù)只能合并數(shù)據(jù)框格式  
    #do.call函數(shù)在數(shù)據(jù)框中執(zhí)行函數(shù)(函數(shù),數(shù)據(jù)列)  
    library("plyr")  #加載獲取rbind.fill函數(shù)  
    #第一種方法  
    list1<-list()  
    list1[[1]]=data.frame(t(data.frame(Job_Pwordseg.ct[1])))  
    list1[[2]]=data.frame(t(data.frame(Job_Pwordseg.ct[2])))  
    do.call(rbind.fill,list1)  
    #第二種方法  
    u=rbind.fill(data.frame(t(data.frame(Job_Pwordseg.ct[1]))),data.frame(t(data.frame(Job_Pwordseg.ct[2])))) 
核心函數(shù)是plyr包中的rbind.fill函數(shù)(合并的數(shù)據(jù),必須是data.frame),do.call可以用來批量執(zhí)行。(do.call用法)
關(guān)于do.call其他用法(R語言 函數(shù)do.call()使用 )
有一個(gè)list,想把里面的所有元素相加求和。發(fā)現(xiàn)了兩個(gè)很有意思的函數(shù)
list <- list(matrix(1:25, ncol = 5), matrix(4:28, ncol = 5), matrix(21:45, ncol=5))
list.sum<-do.call(sum,list)
list.sum<-do.call(cbind,list) 
do.call() 是告訴list一個(gè)函數(shù),然后list里的所有元素來執(zhí)行這個(gè)函數(shù)。
2、dplyr包
dplyr::bind_rows()
[html] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
        mpg   cyl    hp  drat    wt  qsec    vs    am  gear  carb  disp  
      (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)  
    1  21.0     6   110  3.90 2.620 16.46     0     1     4     4    NA  
    2  21.0     6   110  3.90 2.875 17.02     0     1     4     4    NA  
    3  22.8     4    93  3.85 2.320 18.61     1     1     4     1    NA  
    4  21.4     6   110  3.08 3.215 19.44     1     0     3     1    NA  
    5  17.8     6   123  3.92 3.440 18.90     1     0     4     4 167.6  
    6  16.4     8   180  3.07 4.070 17.40     0     0     3     3 275.8  
    7  17.3     8   180  3.07 3.730 17.60     0     0     3     3 275.8  
    8  15.2     8   180  3.07 3.780 18.00     0     0     3     3 275.8 
效果是,不匹配到的放在最后,且等于NA  NA  NA  NA

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }