中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
字符串函數(shù)、正則表達式與變量拆分

敲黑板,劃重點啦~今天是第三十二個教師節(jié),讓我們先對所有在我們求學(xué)路上給予支持、幫助與鼓勵的老師說聲“教師節(jié)快樂,您辛苦了!”。

   今天的推文我們來講一講字符串函數(shù)、正則表達式與變量拆分。我們在把數(shù)據(jù)導(dǎo)入stata中,有時會遇到本來應(yīng)該作為幾個分開的變量,在導(dǎo)入后都跑到了同一列的現(xiàn)象,這時候就需要把這個變量拆分成我們所需要的幾個變量。我們都知道在stata中有一個拆分命令split,這個命令的格式為:

split strvar [if] [in] [, options]

   其中常用的options選項為parse(parse_strings),例如要把下圖數(shù)據(jù)中的姓名拆分成firstnamelastname,則命令為:split name,p( ),即以空格把name拆分,然后進行重命名,rename (name1 name2) (firstname lastname),即可得到我們想要的數(shù)據(jù)。



   上述命令的使用前提是要有一個統(tǒng)一的分隔符號,例如逗號、空格、分號等特殊符號,那如果我們要拆分的數(shù)據(jù)中并沒有統(tǒng)一的分隔符號時我們又該怎么辦呢?在STATALIST上有人遇到下面這個問題:


   我們想把這個數(shù)據(jù)變成包含subject_ID、Sex、Age、Race四個變量的形式,所以需要把SexAge_Race這個變量拆分成Sex、Age、Race三個變量。Race這個變量很好拆分,可以用_作為拆分依據(jù),但是SexAge兩個變量之間是沒有分隔符號的,那該如何拆分呢?我們將采用兩種方法解決這個問題。

方法一:




   在這一方法中,我們使用了substrsubinstr這兩個字符串的處理命令,substr使用格式為substr(s,n1,n2),表示把字符串s中從第n1個字符開始的n2個字符提取出來。所以第一行命令表示把SexAge_Race變量的前6個字符提取出來賦給變量Sex,這樣FEMALE就被提取出來了,第二行命令表示把SexAge_Race變量的前4個字符提取出來,這樣MALE就被賦給了Sex,所以Sex變量被成功提取出來。接著我們又使用了subinstr命令,這個命令的使用格式為subinstr(s1,s2,s3,n),表示把字符串s1中的n個子字符串“s2”用子字符串“s3”來替換,所以第三行命令表示把SexAge_RaceSex變量中Sex變量所表示的子字符串用''替代,即把全部FEMALEMALE去掉,然后剩下的部分用split命令以_分開就可以了,最后重命名一下變量就得到了我們想要的數(shù)據(jù)。


方法二:



   在方法二中,我們主要使用了ustrregexmustrregexs這兩個字符串函數(shù)將正則表達式與字符串進行匹配以及字符串的提取與替換。

   1、ustrregexm(s,re[,noc])(u代表unicodestr代表string,即字符串,reg代表regular,ex代表expression,m代表match,即匹配)

       “s代表字符串,也可以是相應(yīng)的變量,re代表正則表達式,如果字符串中有正則表達式匹配到的內(nèi)容就賦值為1,否則賦值為0noc這個部分可以填上一個數(shù)字,如果你定義了noc,并且是一個不為0的數(shù)字,那么在正則表達式和字符串匹配的時候是不區(qū)分大小寫的。

   2、ustrregexs(n):(s代表substring,即子字符串)

       n為非負整數(shù),代表ustrregexm(s,re)函數(shù)中第n個子表達式對應(yīng)的子字符串。若n0,則代表引號中所有表達式對應(yīng)的子字符串。ustrregexs函數(shù)必須在ustrregexm函數(shù)運行之后才能運行,可用于提取子字符串。

   除了這兩個字符串函數(shù),這里還涉及到正則表達式中的元字符,小編已經(jīng)貼心地幫你們把正則表達式中的常用元字符整理出來啦:


   所以,方法二的處理過程如下:


   首先創(chuàng)建一個子表達式,其中.符號表示可以匹配任意字符,用*?表示懶惰匹配模式,\d匹配數(shù)字,也就是把最左端的數(shù)字前面所有的內(nèi)容,提取出來并賦給變量Sex。同理,提取變量Age時,\d匹配數(shù)字,+表示把前面的字符或子表達式匹配幾次或多次,同樣使用懶惰模式,匹配到最近一個小數(shù)點,點后面的?表示匹配一次或零次,小數(shù)點可能不存在,所以后面的數(shù)字也是匹配任意次,提取出來之后用real函數(shù)把Age變成數(shù)值型變量。最后是Race變量,'_(.*)'表示匹配并提取_后面的所有內(nèi)容。這樣,我們就把數(shù)據(jù)變成我們想要的形式了。


   除此之外,還可以用一個正則表達式來進行提?。?/span>


我們這個正則表達式由三個子表達式構(gòu)成,每個子表達式分別對應(yīng)我們想要提取的三個變量,先用ustrregexm進行匹配后,再用ustrregexs分別把第一個,第二個,第三個變量提取出來,就得到我們要的三個變量。

   在我們以前的公眾號上,有位師兄寫過幾篇推文詳細介紹字符串函數(shù)和正則表達式中的常用元字符,大家有興趣可以去看一下。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
awk簡明教程
awk
【20181130】- 在ExcelVBA中使用正則表達式
37個我愛Ruby的理由
VBScript常用語法手冊學(xué)習(xí)
vim正則表達式
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服