
R語(yǔ)言數(shù)據(jù)集行列互換技巧
現(xiàn)在給大家介紹的數(shù)據(jù)處理技巧是長(zhǎng)轉(zhuǎn)寬,也就相當(dāng)于Excel中的轉(zhuǎn)置,不過(guò)用R語(yǔ)言實(shí)現(xiàn)的長(zhǎng)轉(zhuǎn)寬還有數(shù)據(jù)合并的功能,自然比Excel強(qiáng)大多了。
這里給大家介紹4個(gè)函數(shù),其中melt()、dcast()來(lái)自reshape2包,gather()、spread()來(lái)自tidyr包
一、寬轉(zhuǎn)長(zhǎng)——melt()、gather()
[python] view plain copy
mydata<-data.frame(
name=c("store1","store2","store3","store4"),
address=c("普陀區(qū)","黃浦區(qū)","徐匯區(qū)","浦東新區(qū)"),
sale2014=c(3000,2500,2100,1000),
sale2015=c(3020,2800,3900,2000),
sale2016=c(5150,3600,2700,2500),
sale2017=c(4450,4100,4000,3200)
)
#寬轉(zhuǎn)長(zhǎng)——melt
mydata1<-melt(
mydata,
id.vars=c("address","name"),#要保留的主字段
variable.name = "Year",#轉(zhuǎn)換后的分類字段名稱(維度)
value.name = "Sale" #轉(zhuǎn)換后的度量值名稱
)
輸出結(jié)果
[python] view plain copy
> mydata1<-melt(
+ mydata,
+ id.vars=c("address","name"),#要保留的主字段
+ variable.name = "Year",#轉(zhuǎn)換后的分類字段名稱(維度)
+ value.name = "Sale" #轉(zhuǎn)換后的度量值名稱
+ )
> mydata1
address name Year Sale
1 普陀區(qū) store1 sale2014 3000
2 黃浦區(qū) store2 sale2014 2500
3 徐匯區(qū) store3 sale2014 2100
4 浦東新區(qū) store4 sale2014 1000
5 普陀區(qū) store1 sale2015 3020
6 黃浦區(qū) store2 sale2015 2800
7 徐匯區(qū) store3 sale2015 3900
8 浦東新區(qū) store4 sale2015 2000
9 普陀區(qū) store1 sale2016 5150
10 黃浦區(qū) store2 sale2016 3600
11 徐匯區(qū) store3 sale2016 2700
12 浦東新區(qū) store4 sale2016 2500
13 普陀區(qū) store1 sale2017 4450
14 黃浦區(qū) store2 sale2017 4100
15 徐匯區(qū) store3 sale2017 4000
16 浦東新區(qū) store4 sale2017 3200
再來(lái)看看gather()函數(shù)怎么用
[python] view plain copy
> #寬轉(zhuǎn)長(zhǎng)——gather
> mydata1<-tidyr::gather(
+ data=mydata,
+ key="Year",
+ value="sale",
+ sale2014:sale2017
+ )
> mydata1
name address Year sale
1 store1 普陀區(qū) sale2014 3000
2 store2 黃浦區(qū) sale2014 2500
3 store3 徐匯區(qū) sale2014 2100
4 store4 浦東新區(qū) sale2014 1000
5 store1 普陀區(qū) sale2015 3020
6 store2 黃浦區(qū) sale2015 2800
7 store3 徐匯區(qū) sale2015 3900
8 store4 浦東新區(qū) sale2015 2000
9 store1 普陀區(qū) sale2016 5150
10 store2 黃浦區(qū) sale2016 3600
11 store3 徐匯區(qū) sale2016 2700
12 store4 浦東新區(qū) sale2016 2500
13 store1 普陀區(qū) sale2017 4450
14 store2 黃浦區(qū) sale2017 4100
15 store3 徐匯區(qū) sale2017 4000
16 store4 浦東新區(qū) sale2017 3200
和melt()函數(shù)不同,gather()函數(shù)需要指定關(guān)鍵字段key,以及關(guān)鍵字段對(duì)應(yīng)的值value,但是gather()函數(shù)更加好理解。
二、長(zhǎng)轉(zhuǎn)寬——dcast()和spread()
還是用上面的data1數(shù)據(jù)集,先來(lái)看看dcast()函數(shù)
[python] view plain copy
#長(zhǎng)轉(zhuǎn)寬——dcast
dcast(
data=mydata1,
name+address~Year
#左側(cè)是要保留的字段,右側(cè)是要分割的分類變量,列數(shù)等于表達(dá)式
#右側(cè)分類變量的類別個(gè)數(shù)
)
[python] view plain copy
> #長(zhǎng)轉(zhuǎn)寬——dcast
> dcast(
+ data=mydata1,
+ name+address~Year
+ #左側(cè)是要保留的字段,右側(cè)是要分割的分類變量,列數(shù)等于表達(dá)式
+ #右側(cè)分類變量的類別個(gè)數(shù)
+ )
Using sale as value column: use value.var to override.
name address sale2014 sale2015 sale2016 sale2017
1 store1 普陀區(qū) 3000 3020 5150 4450
2 store2 黃浦區(qū) 2500 2800 3600 4100
3 store3 徐匯區(qū) 2100 3900 2700 4000
4 store4 浦東新區(qū) 1000 2000 2500 3200
dcast()函數(shù)的使用規(guī)則需要琢磨下才能理解,大家好好看看注釋部分,再來(lái)看看spread()
[python] view plain copy
#長(zhǎng)轉(zhuǎn)寬——spread
tidyr::spread(
data=mydata1,
key=Year,
value=sale
)
[python] view plain copy
> #長(zhǎng)轉(zhuǎn)寬——spread
> tidyr::spread(
+ data=mydata1,
+ key=Year,
+ value=sale
+ )
name address sale2014 sale2015 sale2016 sale2017
1 store1 普陀區(qū) 3000 3020 5150 4450
2 store2 黃浦區(qū) 2500 2800 3600 4100
3 store3 徐匯區(qū) 2100 3900 2700 4000
4 store4 浦東新區(qū) 1000 2000 2500 3200
直接調(diào)用tidyr::spread,需要指定關(guān)鍵字段key和對(duì)應(yīng)的值value。
但是從理解上來(lái)看,我個(gè)人更喜歡tidyr包的函數(shù),使用很清晰,大家可以根據(jù)實(shí)際情況自行選擇,好啦,今天的分享結(jié)束,下次再見(jiàn)!
數(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