
R語(yǔ)言數(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ù)集合在一起,沒(méi)有溝通a、b數(shù)據(jù)集的by,這樣出現(xiàn)的數(shù)據(jù)很多,相當(dāng)于a*b條數(shù)據(jù);
2、merge函數(shù)是匹配到a,b數(shù)據(jù)集的并,都有的才匹配出來(lái),如果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)來(lái),空缺的補(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)來(lái), 但,y中沒(méi)有的則不放過(guò)來(lái)。
需要這個(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è)向量粘合在一起生成新的字符串向量,粘合后的新字符之間沒(méi)有間隔。
[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()按照縱向方向,或者說(shuō)按列的方式將矩陣連接到一起。
rbind()按照橫向的方向,或者說(shuō)按行的方式將矩陣連接到一起
rbind/cbind對(duì)數(shù)據(jù)合并的要求比較嚴(yán)格:合并的變量名必須一致;數(shù)據(jù)等長(zhǎng);指標(biāo)順序必須一致。相比來(lái)說(shuō),其他一些方法要好一些,有dplyr,sqldf中的union
5、sqldf包
利用SQL語(yǔ)句來(lái)寫,進(jìn)行數(shù)據(jù)合并,適合數(shù)據(jù)庫(kù)熟悉的人,可參考:
R語(yǔ)言︱ 數(shù)據(jù)庫(kù)SQL-R連接與SQL語(yǔ)句執(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ǔ)齊沒(méi)有匹配到的缺失值為NA。
[plain] view plain copy
print?在CODE上查看代碼片派生到我的代碼片
#————————————————————————————不等長(zhǎng)合并
#如何解決合并時(shí)數(shù)據(jù)不等長(zhǎng)問(wèn)題——兩種方法: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可以用來(lái)批量執(zhí)行。(do.call用法)
關(guān)于do.call其他用法(R語(yǔ)言 函數(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里的所有元素來(lái)執(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
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開(kāi)的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開(kāi)始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開(kāi)發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10