一些關(guān)于數(shù)據(jù)和代碼管理的小思考

1裳食、代碼相關(guān)的建議

我們寫代碼的目的有1)清理數(shù)據(jù);2)轉(zhuǎn)換數(shù)據(jù)芙沥;3)從網(wǎng)頁上爬取數(shù)據(jù)诲祸;4)整合數(shù)據(jù);5)統(tǒng)計分析而昨;6)建模救氯;7)生成符合目標(biāo)格式的結(jié)果;8)畫圖歌憨;9)挖掘?qū)懪f代碼時的想法着憨、思考為什么當(dāng)下我們得到的結(jié)果與當(dāng)時不同等等。

1.1 代碼的可重復(fù)性使用問題

1务嫡、把所有可以自動化的東西自動化甲抖。

2、編寫一個從頭到尾執(zhí)行所有代碼的腳本心铃。

交互模式:數(shù)據(jù)構(gòu)建和統(tǒng)計分析應(yīng)該存儲在腳本中准谚。例如:Stata中的.do 文件,R文件中的.r 文件等等去扣。

3柱衔、不可重復(fù)的代碼如何處理?

譬如想生成一組固定的隨機(jī)數(shù),則這段代碼以后就不能重復(fù)使用唆铐;下次直接跑這段代碼哲戚,會導(dǎo)致隨機(jī)數(shù)會變,如果還覆蓋了原始隨機(jī)數(shù)艾岂,那么復(fù)原原始數(shù)據(jù)就很困難了顺少。

建議:

1)在不可復(fù)制的代碼之前加上注釋→以提醒之后研究此代碼的人不要跑注釋中提到不可復(fù)制的那段代碼;

2)如果用R語言澳盐,可以在生成隨機(jī)數(shù)之前加上set.seed(),其中括號內(nèi)的整數(shù)是可以隨機(jī)設(shè)置的令宿,其僅表示設(shè)置了一個隨機(jī)整數(shù)叼耙。

1.2 了解該語言的特性

不管用什么語言,最應(yīng)該一開始先了解該語言的數(shù)據(jù)結(jié)構(gòu)和各類參數(shù)的設(shè)置粒没。

1.3 用他人或自己構(gòu)造的函數(shù)來簡化代碼

在R和Python中調(diào)用包里的函數(shù)就是用他人構(gòu)造的函數(shù)來簡化代碼筛婉。

(之后爭取補(bǔ)充R語言寫函數(shù)的小技巧)

1.4給代碼加上清晰的注釋

在寫摘要的時候,要消除冗余癞松,記錄核心即可爽撒;以提高清晰度;描述文字不能過于抽象响蓉。如果注釋反而會增大理解難度硕勿,那么可以不寫。

圖 分步驟計算cronbach's alpha系數(shù)
圖 寫函數(shù)計算cronbach's alpha系數(shù)


2枫甲、變量名設(shè)置

2.1 除了臨時演算源武,應(yīng)避免使用無序字母直接給變量命名。

舉例:假如在某次的統(tǒng)計分析中想幻,我們把一系列變量命名為a粱栖、b、c脏毯、d等闹究;這樣處理看似簡單省時,但相對應(yīng)地會產(chǎn)生如下后果:在之后回溯代碼時食店,我們就無法理解當(dāng)時隨意命名的變量代表什么含義渣淤,會加大后續(xù)處理的時間成本。

2.2 用不同軟件處理變量時吉嫩,要注意命名規(guī)則都不同砂代,有的軟件會區(qū)分大小寫,有的軟件有變量名長度的限制率挣。

2.3 變量名要清晰簡明

清晰簡明的變量名不僅能夠幫助我們自己回憶當(dāng)時的命名邏輯刻伊,也可以幫助他人理解變量名的含義。可以利用縮小捶箱,或者英文單詞的前幾個字母來作為變量名智什。

2.4 規(guī)劃系列變量

如果是系列變量,則可以借助“_”來規(guī)劃系列變量的命名排列邏輯丁屎。

舉例:用R軟件計算跨年擔(dān)保網(wǎng)絡(luò)的統(tǒng)計指標(biāo)時荠锭,可以將細(xì)分年份納入變量名中。計算入度相關(guān)變量晨川,我們可以將變量名設(shè)置為indegree_17证九、indegree_18等;同時可以寫函數(shù)將變量批量命名共虑。


3愧怜、代碼和數(shù)據(jù)的管理

3.1 同任務(wù)下的數(shù)據(jù)管理

1、對同一批數(shù)據(jù)做數(shù)據(jù)分析妈拌、并相對應(yīng)地生成不同格式的文件時拥坛,要注意,系列代碼名尘分、數(shù)據(jù)名盡可能做到同類可比猜惋。

2、批量運行整個文件下的文件前培愁,要做檢查著摔。

3、我們在給數(shù)據(jù)集命名的時候可以加上時間定续,這樣做有什么好處呢梨撞?

舉例:某個數(shù)據(jù)地文件名里的時間是“220221”,但在文件夾中顯示的最后修改時間是“220321”香罐。則我們就要檢查是否存在數(shù)據(jù)和版本不對應(yīng)的問題卧波。

3.2 數(shù)據(jù)的規(guī)范化與主鍵

1、將清理過的數(shù)據(jù)存儲在具有唯一庇茫、不丟失鍵的表中港粱。

舉例:在合并多個年份的訪員編碼時,如果主鍵不唯一旦签,那么在后期處理sas7bdat文件時查坪,會造成數(shù)據(jù)錯位的現(xiàn)象。

2宁炫、在你的代碼管道中保持?jǐn)?shù)據(jù)的規(guī)范化偿曙,可以將粗?jǐn)?shù)據(jù)整理為由相應(yīng)主鍵連接而得到的一系列規(guī)范的子數(shù)據(jù),


4羔巢、數(shù)據(jù)集的自動化生成

4.1 用R語言合并同一個文件夾下的全部數(shù)據(jù)

library(rJava)

library(xlsxjars)

library(xlsx)

library(readxl)

library(data.table)

library(dplyr)

remove.packages("rJava")

Sys.setenv(JAVA_HOME='D:/Program Files (x86)/Java/jdk1.8.0_144/jre')

setwd('D:\\數(shù)據(jù)分析0612')

# 讀取該工作空間下的所有文件名

filenames <- dir()

# 初始化數(shù)據(jù)框望忆,用于后面的數(shù)據(jù)合并

data2 <- data.frame()

#通過循環(huán)完成數(shù)據(jù)合并

for (i in filenames){

# 構(gòu)造數(shù)據(jù)路徑

path <- paste0(getwd(),'\\',i)

#res <- c(res,path)

# 讀取并合并數(shù)據(jù)

data2 <- rbind(data2,read_excel(path = path))

}


5罩阵、文檔的版本

5.1 版本的管理

在寫技術(shù)文檔的時候,我們不太可能不做任何修改启摄、一遍寫完稿壁,故我們將報告的版本號整理在文檔名中。

舉例:修訂“最高學(xué)歷計算說明文檔”歉备。

我們將初稿命名為“最高學(xué)歷計算說明文檔_v1”傅是,往后版本可以記錄為v2、v3蕾羊。

一般來說喧笔,每做一次修訂就是一個version。假如涉及切換設(shè)備/或者處理完v2后龟再,隔了很久再處理下一個版本v3书闸,則可以對v2添加完成時間0603、0604等吸申,以防止出現(xiàn)多個v2梗劫,v3不知道應(yīng)該接在哪個v2后面享甸。

5.2 多人協(xié)作

假如一個文檔涉及多人協(xié)作時截碴,則可以將修改人的縮寫納入變量名中

舉例:多人合作完成“文本編碼技術(shù)報告”,修改人有W蛉威、G日丹、Q,各人都會對文件開啟修訂模式

第1版:W完成原稿蚯嫌,將報告命名為“文本編碼技術(shù)報告0630”哲虾;

第2版:G完成一遍修改,將報告命名為“文本編碼技術(shù)報告0702_G”;

第3版:假如在同一天择示,W也要完成一遍修改束凑。如果她是在“文本編碼技術(shù)報告0702_G”的基礎(chǔ)上修改的,則將報告命名為“文本編碼技術(shù)報告0702_G_W”栅盲;采用這種方式的話汪诉,下一個修改的人只用在“文本編碼技術(shù)報告0702_G_W”的基礎(chǔ)上修改就好了。如果她與G同步完成修改谈秫,即她是在“文本編碼技術(shù)報告0630”修改的扒寄,則將報告命名為“文本編碼技術(shù)報告0702_W”;采用這種方式的話拟烫,下一個修改的人則需要在自己修改前比對“文本編碼技術(shù)報告0702_G”和“文本編碼技術(shù)報告0702_W”這兩個文件有什么差異该编。

第4版:Q完成原稿,將報告命名為“文本編碼技術(shù)報告0705”?

?

參考文獻(xiàn)

1硕淑、Matthew Gentzkow,Jesse M. Shapiro,Chicago Booth and NBER.Code and Data for the Social Sciences: A Practitioner’s Guide.2014.

2课竣、數(shù)據(jù)格式和數(shù)據(jù)讀取?(20條消息) R語言——數(shù)據(jù)格式和數(shù)據(jù)讀取_devoteto的博客-CSDN博客_r語言數(shù)據(jù)格式

3嘉赎、R語言的高級數(shù)據(jù)結(jié)構(gòu)?附代碼|詳解R語言的高級數(shù)據(jù)結(jié)構(gòu) (baidu.com)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稠氮,隨后出現(xiàn)的幾起案子曹阔,更是在濱河造成了極大的恐慌,老刑警劉巖隔披,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赃份,死亡現(xiàn)場離奇詭異,居然都是意外死亡奢米,警方通過查閱死者的電腦和手機(jī)抓韩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鬓长,“玉大人谒拴,你說我怎么就攤上這事∩娌ǎ” “怎么了英上?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長啤覆。 經(jīng)常有香客問我苍日,道長,這世上最難降的妖魔是什么窗声? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任相恃,我火速辦了婚禮,結(jié)果婚禮上笨觅,老公的妹妹穿的比我還像新娘拦耐。我一直安慰自己,他們只是感情好见剩,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布杀糯。 她就那樣靜靜地躺著,像睡著了一般苍苞。 火紅的嫁衣襯著肌膚如雪固翰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天柒啤,我揣著相機(jī)與錄音倦挂,去河邊找鬼。 笑死担巩,一個胖子當(dāng)著我的面吹牛方援,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涛癌,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼犯戏,長吁一口氣:“原來是場噩夢啊……” “哼送火!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起先匪,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤种吸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后呀非,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坚俗,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年岸裙,在試婚紗的時候發(fā)現(xiàn)自己被綠了猖败。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡降允,死狀恐怖恩闻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剧董,我是刑警寧澤幢尚,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站翅楼,受9級特大地震影響尉剩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜犁嗅,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一边涕、第九天 我趴在偏房一處隱蔽的房頂上張望晤碘。 院中可真熱鬧褂微,春花似錦、人聲如沸园爷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽童社。三九已至求厕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扰楼,已是汗流浹背呀癣。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留弦赖,地道東北人项栏。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像蹬竖,于是被迫代替她去往敵國和親沼沈。 傳聞我的和親對象是個殘疾皇子流酬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容