整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          我們?nèi)绾芜M(jìn)行網(wǎng)頁分析?

          們怎么進(jìn)行網(wǎng)站分析呢?

          首先,如果要用程序抓取網(wǎng)頁自動(dòng)保存到本地,就要會(huì)用socket編程,或者學(xué)習(xí)使用libcurl庫,這些都比學(xué)html語言有用的多,不做網(wǎng)頁抓取的時(shí)候,這些知識(shí)依然非常有用。而且,不同的網(wǎng)頁,內(nèi)容不同,規(guī)律可能也不同。比如你給的那個(gè)例子網(wǎng)址,我右鍵查看了源代碼,里面就根本沒有所謂的<td>、<tr>標(biāo)簽,即它的表格不是通過這些標(biāo)簽來實(shí)現(xiàn)的。所以,讓你去看這些標(biāo)簽,就是南轅北轍了。

          網(wǎng)頁分析,說到底還是字符串處理和分析。所以,你如果真的想學(xué),不如好好學(xué)一下正則表達(dá)式和字符串處理相關(guān)的函數(shù),以及函數(shù)庫,比如tidy庫等。正則表達(dá)式是用來匹配一類字符串的,方便找規(guī)律,也方便處理,你稍微學(xué)習(xí)一點(diǎn)點(diǎn)就知道有多么的強(qiáng)大,多么的有用了。而且,正則表達(dá)式跟語言無關(guān),什么語言都能用得到,學(xué)這個(gè)不虧的。

          標(biāo)準(zhǔn)C庫中沒有正則表達(dá)式相關(guān)的函數(shù),一般來說C中使用兩種正則表達(dá)式庫,一為POSIX C正則庫,二為perl正則庫PCRE。相比較而言PCRE要強(qiáng)大些,POSIX C正則庫就足夠使用。

          其次,進(jìn)行網(wǎng)頁分析的時(shí)候,對(duì)算法也要有一定的了解:

          (1)基于網(wǎng)絡(luò)拓?fù)涞姆治鏊惴ǎ夯诰W(wǎng)頁之間的鏈接,通過已知的網(wǎng)頁或數(shù)據(jù),來對(duì)與其有直接或間接鏈接關(guān)系的對(duì)象(可以是網(wǎng)頁或網(wǎng)站等)作出評(píng)價(jià)的算法。又分為網(wǎng)頁粒度、網(wǎng)站粒度和網(wǎng)頁塊粒度這三種。

          (2)基于網(wǎng)頁內(nèi)容的網(wǎng)頁分析算法:基于網(wǎng)頁內(nèi)容的分析算法指的是利用網(wǎng)頁內(nèi)容(文本、數(shù)據(jù)等資源)特征進(jìn)行的網(wǎng)頁評(píng)價(jià)。網(wǎng)頁的內(nèi)容從原來的以超文本為主,發(fā)展到后來動(dòng)態(tài)頁面(或稱為hidden web)數(shù)據(jù)為主,后者的數(shù)據(jù)量約為直接可見頁面數(shù)據(jù)(PIW,publiclyIndexable Web)的400~500倍。

          以上便是小編對(duì)“我們?nèi)绾芜M(jìn)行網(wǎng)頁分析?”的大致介紹,希望能有所幫助!

          idy流處理數(shù)據(jù)越來越流行,我想這與管道符%>% 的使用,數(shù)據(jù)處理動(dòng)詞化,有著很重要的關(guān)系。

          用最少的時(shí)間,解決最重要的、最常見的問題,我把這稱為是高效;剩余的難點(diǎn),我把其稱為提高。

          filter動(dòng)詞的使用

          首先需要明確的是

          filter針對(duì)的是"行"的操作, select是針對(duì)列的操作

          在這個(gè)基礎(chǔ)之上,展開實(shí)戰(zhàn) 使用nycflights13 包中的數(shù)據(jù)進(jìn)行演示

          1. 單獨(dú)提出某一行

          觀察數(shù)據(jù)特點(diǎn)

          flights
          #> # A tibble: 336,776 x 19
          #>    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
          #>   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
          #> 1  2013     1     1      517            515         2      830            819
          #> 2  2013     1     1      533            529         4      850            830
          #> 3  2013     1     1      542            540         2      923            850
          #> 4  2013     1     1      544            545        -1     1004           1022
          #> 5  2013     1     1      554            600        -6      812            837
          #> 6  2013     1     1      554            558        -4      740            728
          #> # … with 336,770 more rows, and 11 more variables: arr_delay <dbl>,
          #> #   carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
          #> #   air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
          

          提取月份為1,日期為1的數(shù)據(jù)

          filter(flights, month == 1, day == 1)
          #> # A tibble: 842 x 19
          #>    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
          #>   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
          #> 1  2013     1     1      517            515         2      830            819
          #> 2  2013     1     1      533            529         4      850            830
          #> 3  2013     1     1      542            540         2      923            850
          #> 4  2013     1     1      544            545        -1     1004           1022
          #> 5  2013     1     1      554            600        -6      812            837
          #> 6  2013     1     1      554            558        -4      740            728
          #> # … with 836 more rows, and 11 more variables: arr_delay <dbl>, carrier <chr>,
          #> #   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
          #> #   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
          

          或者直接賦值給某一個(gè)變量

          jan1 <- filter(flights, month == 1, day == 1)

          插一個(gè)操作技巧,在變量兩側(cè)加上括號(hào),也可以直接顯示,結(jié)果

          (jan1 <- filter(flights, month == 1, day == 1))

          2. 加入邏輯運(yùn)算符提取多行

          “&” 是“和”,“|” 是“或”,“!"指代“不是”

          加上邏輯運(yùn)算符,配合管道符,就可以進(jìn)行多項(xiàng)條件選取的操作。 例如,要選取月份為11和12的觀察選項(xiàng),就會(huì)有兩種寫法

          filter(flights, month == 11 | month == 12)
          

          或者

          nov_dec <- filter(flights, month %in% c(11, 12))
          

          %in%是匹配符,在判斷的時(shí)候經(jīng)常用到

          參考資料

          https://r4ds.had.co.nz/transform.html

          擊上方關(guān)注,All in AI中國

          我經(jīng)常告訴我的同事和其他程序員一些我在R中使用的簡單的東西,它們可以幫助我完成需要改進(jìn)的任務(wù)。這些方法從簡單的快捷方式、鮮為人知的函數(shù)到方便的小技巧都有。

          由于R生態(tài)系統(tǒng)如此豐富且不斷增長,人們往往會(huì)錯(cuò)過一些能夠幫助他們完成任務(wù)的事情。所以我經(jīng)常得到一些驚訝的反應(yīng),就像我從來不知道那樣!

          這里有十件讓我的生活更輕松的事情。如果你已經(jīng)全部了解它們,很抱歉浪費(fèi)你的閱讀時(shí)間,請(qǐng)考慮添加一些評(píng)論,其中包含你認(rèn)為對(duì)其他讀者有益的其他內(nèi)容。

          1. switch函數(shù)

          我喜歡swith()。它基本上是根據(jù)另一個(gè)變量的值來選擇其值的if語句的一個(gè)方便的縮寫。我發(fā)現(xiàn)當(dāng)我編寫代碼時(shí),根據(jù)您先前的選擇需要加載不同的數(shù)據(jù)集時(shí),它特別有用。例如,如果您有一個(gè)名為animal的變量,并且您想要根據(jù)動(dòng)物是狗、貓還是兔子加載不同的數(shù)據(jù)集,您可以寫下:

          data <- read.csv(
           switch(animal,
           "dog" = "dogdata.csv",
           "cat" = "catdata.csv",
           "rabbit" = "rabbitdata.csv")
          )
          

          這在Shiny應(yīng)用程序中特別有用,您可能希望根據(jù)一個(gè)或多個(gè)輸入菜單選項(xiàng)加載不同的數(shù)據(jù)集甚至環(huán)境文件。

          2.RStudio快捷鍵

          這不僅僅是一個(gè)R技巧,更多是關(guān)于RStudio IDE的更多內(nèi)容,但是可用于常用命令的快捷鍵非常有用,可以節(jié)省大量的輸入時(shí)間。我最喜歡的是Ctrl + Shift + M用于管道運(yùn)算符%>%,用Alt + - 用于賦值運(yùn)算符< - 。如果你想看到一整套這些很棒的快捷方式,只需在RStudio中鍵入Atl + Shift + K即可。

          3.flexdashboard包

          如果您希望快速啟動(dòng)Shiny儀表板,并且操作簡單,那么flexdashboard軟件包可以滿足您的一切需求。它提供了簡單的HTML快捷方式,可以輕松構(gòu)建側(cè)邊欄,并將顯示組織成行和列。它還有一個(gè)超級(jí)靈活的標(biāo)題欄,您可以將應(yīng)用程序組織到不同的頁面,并放入圖標(biāo)和指向Github代碼或電子郵件地址或其他任何內(nèi)容的鏈接。作為在RMarkdown中運(yùn)行的軟件包,它還允許您將所有應(yīng)用程序保存在一個(gè)Rmd文件中,而不是需要將其分解為單獨(dú)的服務(wù)器和UI文件,例如shinydashboard。每當(dāng)我需要?jiǎng)?chuàng)建儀表板的簡單原型版本,然后再將其轉(zhuǎn)移到更高級(jí)的設(shè)計(jì)時(shí),我就會(huì)使用flexdashboard。我經(jīng)常可以使用flexdashboard在一小時(shí)內(nèi)啟動(dòng)并運(yùn)行儀表板。

          4.R Shiny中的req和驗(yàn)證函數(shù)

          R Shiny開發(fā)可能令人沮喪,特別是當(dāng)您收到通用錯(cuò)誤消息時(shí),無法幫助您了解底層出現(xiàn)的問題。隨著Shiny的發(fā)展,越來越多的驗(yàn)證和測試功能被添加,以幫助更好地診斷和警告特定發(fā)生的錯(cuò)誤。req()函數(shù)允許您阻止操作發(fā)生,除非環(huán)境中存在另一個(gè)變量,但是靜默地執(zhí)行操作而不顯示錯(cuò)誤。因此,您可以使UI元素的顯示以先前的操作為條件。例如,參考我上面的例子1:

          output$go_button <- shiny::renderUI({
           # only display button if an animal input has been chosen
           shiny::req(input$animal)
           # display button
           
           shiny::actionButton("go",
           paste("Conduct", input$animal, "analysis!")
           )
          })
          

          在呈現(xiàn)輸出之前進(jìn)行validate()檢查,并且如果某個(gè)條件未滿足,則允許您返回定制的錯(cuò)誤消息,例如,如果用戶上載了錯(cuò)誤的文件:

          # get csv input file
          inFile <- input$file1
          data <- inFile$datapath
          # render table only if it is dogs
          shiny::renderTable({
           # check that it is the dog file, not cats or rabbits
           shiny::validate(
           need("Dog Name" %in% colnames(data)),
           "Dog Name column not found - did you load the right file?"
           )
           data
          })
          

          5.使用系統(tǒng)環(huán)境保留我的所有憑據(jù)

          如果要共享需要登錄憑據(jù)到數(shù)據(jù)庫之類的代碼,則可以使用系統(tǒng)環(huán)境來避免將這些憑據(jù)發(fā)布到Github或其他可能存在風(fēng)險(xiǎn)的空間。您可以將憑據(jù)作為命名環(huán)境變量放在R會(huì)話中,例如:

          然后在共享腳本中,您可以使用這些環(huán)境變量登錄。例如:

          # get csv input file
          inFile <- input$file1
          data <- inFile$datapath
          # render table only if it is dogs
          shiny::renderTable({
           # check that it is the dog file, not cats or rabbits
           shiny::validate(
           need("Dog Name" %in% colnames(data)),
           "Dog Name column not found - did you load the right file?"
           )
           data
          })
          

          更方便的是,如果你經(jīng)常使用這些憑證,你可以在操作系統(tǒng)中將它們設(shè)置為環(huán)境變量,這樣當(dāng)你在R中工作時(shí)它們總是可用,但你不必在你的代碼中顯示它們。

          6.使用styler自動(dòng)化tidyverse樣式

          您的代碼可能不像您所希望的那樣整潔,您沒有時(shí)間對(duì)其進(jìn)行編輯。stylerpackage具有許多功能,允許自動(dòng)重新編碼代碼以匹配tidyverse風(fēng)格。它非常簡單,就像在你的凌亂腳本上運(yùn)行styler :: style_file(),它將為你做很多(雖然不是全部)工作。

          7.參數(shù)化R Markdown文檔

          所以你寫了一個(gè)可愛的R Markdown文檔,你已經(jīng)分析了很多關(guān)于狗的事實(shí)。然后你會(huì)被告知 - '不,我對(duì)貓更感興趣。如果將R標(biāo)記文檔參數(shù)化,則只需一個(gè)命令就可以自動(dòng)生成關(guān)于貓的類似報(bào)告。

          您可以通過在R Markdown文檔的YAML標(biāo)題中定義參數(shù),并為每個(gè)參數(shù)賦值來完成此操作。例如:

          現(xiàn)在,您可以將這些變量寫入文檔中的R代碼,如params 和

          years_of_study。如果您正常編織文檔,它將根據(jù)值變量使用這些參數(shù)的默認(rèn)值進(jìn)行編織。但是,如果您通過在RStudio的Knit下拉列表中選擇此選項(xiàng)來編織參數(shù)(或使用knit_with_parameters()),則會(huì)出現(xiàn)一個(gè)可愛的菜單選項(xiàng),您可以在編織文檔之前選擇參數(shù)。

          用參數(shù)編織

          8.revealjs

          revealjs是一個(gè)包,它允許您使用帶有嵌入式R代碼的直觀幻燈片導(dǎo)航菜單以HTML格式創(chuàng)建精美的演示文稿。它可以在R Markdown中使用,并且具有非常直觀的HTML快捷方式,允許您使用各種樣式選項(xiàng)創(chuàng)建漂亮幻燈片的嵌套邏輯結(jié)構(gòu)。演示文稿是用HTML表示的,這意味著人們可以通過他們的平板電腦或手機(jī)聽你說話,這非常方便。您可以通過安裝包然后在YAML標(biāo)頭中調(diào)用它來設(shè)置revealjspresentation。這是我最近使用revealjs發(fā)表的演講的YAML標(biāo)題示例

          --
          title: "Exporing the Edge of the People Analytics Universe"
          author: "Keith McNulty"
          output:
           revealjs::revealjs_presentation:
           center: yes
           template: starwars.html
           theme: black
          date: "HR Analytics Meetup London - 18 March, 2019"
          resource_files:
          - darth.png
          - deathstar.png
          - hanchewy.png
          - millenium.png
          - r2d2-threepio.png
          - starwars.html
          - starwars.png
          - stormtrooper.png
          ---
          

          這是一個(gè)示例頁面。您可以在此處找到代碼和演示文稿hr_meetup_london/presentation.Rmd at master · keithmcnulty/hr_meetup_london · GitHub

          使用revealjs輕松進(jìn)行在線演示

          9.R Shiny中的HTML標(biāo)簽(例如,在您的Shiny應(yīng)用中播放音頻)

          大多數(shù)人沒有充分利用R Shiny中提供的HTML標(biāo)簽。有110個(gè)標(biāo)簽提供各種HTML格式和其他命令的快捷方式。最近我構(gòu)建了一個(gè)應(yīng)用程序,花了很長時(shí)間來執(zhí)行任務(wù)。知道用戶在等待它完成時(shí)可能會(huì)出現(xiàn)多任務(wù),我使用標(biāo)簽$ audio讓應(yīng)用程序大肆宣傳,以便在任務(wù)完成時(shí)提醒用戶。

          10.贊美包

          這個(gè)贊美包非常簡單但也很棒,給用戶帶來了好評(píng)。雖然這看起來像是毫無意義的自我欽佩,但它實(shí)際上在編寫R包時(shí)非常有用,如果他們做正確的事情,例如如果一個(gè)過程成功完成,你可以向某人提供贊美或鼓勵(lì)。您也可以將它放在復(fù)雜腳本的末尾,以便在成功運(yùn)行時(shí)為您提供額外的快樂。

          最初我是一名純數(shù)學(xué)家,然后我成為了一名心理測量學(xué)家和一名數(shù)據(jù)科學(xué)家。我熱衷于將所有這些學(xué)科的嚴(yán)謹(jǐn)性應(yīng)用于復(fù)雜的人們問題。我也是一名編碼極客,也是日本角色扮演游戲的忠實(shí)粉絲。


          主站蜘蛛池模板: 中文字幕精品亚洲无线码一区| 久久久综合亚洲色一区二区三区| 久久99久久无码毛片一区二区| 日韩精品无码免费一区二区三区| 无码国产精品一区二区免费I6| 精品福利一区二区三| 国产成人av一区二区三区在线 | 久久综合精品不卡一区二区 | 日本一区精品久久久久影院| 国产suv精品一区二区6| 99热门精品一区二区三区无码 | 精品国产高清自在线一区二区三区 | 国产色情一区二区三区在线播放| 国产一区二区精品久久91| 亚洲AV无码国产一区二区三区| 亚洲一区二区三区国产精品无码| 日本一区二区不卡视频| 中文字幕亚洲一区二区va在线| 国产一区二区视频在线播放| 国产成人精品无人区一区| 搜日本一区二区三区免费高清视频| 视频一区在线播放| 老湿机一区午夜精品免费福利| 国产成人精品一区二区三区| 精品一区二区三区在线观看| 日本精品一区二区久久久| 成人在线一区二区| 一区二区免费视频| 无码少妇丰满熟妇一区二区| 日韩精品一区二区三区中文字幕| 一区二区中文字幕在线观看| 2014AV天堂无码一区| 国产成人精品久久一区二区三区| 精品国产一区二区三区| 国产成人精品亚洲一区| 日韩一区二区三区精品| 久久精品道一区二区三区| 亚洲综合一区无码精品| 亚洲国产综合无码一区二区二三区| 99精品一区二区三区| 久久久精品日本一区二区三区|