Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
們怎么進行網站分析呢?
首先,如果要用程序抓取網頁自動保存到本地,就要會用socket編程,或者學習使用libcurl庫,這些都比學html語言有用的多,不做網頁抓取的時候,這些知識依然非常有用。而且,不同的網頁,內容不同,規律可能也不同。比如你給的那個例子網址,我右鍵查看了源代碼,里面就根本沒有所謂的<td>、<tr>標簽,即它的表格不是通過這些標簽來實現的。所以,讓你去看這些標簽,就是南轅北轍了。
網頁分析,說到底還是字符串處理和分析。所以,你如果真的想學,不如好好學一下正則表達式和字符串處理相關的函數,以及函數庫,比如tidy庫等。正則表達式是用來匹配一類字符串的,方便找規律,也方便處理,你稍微學習一點點就知道有多么的強大,多么的有用了。而且,正則表達式跟語言無關,什么語言都能用得到,學這個不虧的。
標準C庫中沒有正則表達式相關的函數,一般來說C中使用兩種正則表達式庫,一為POSIX C正則庫,二為perl正則庫PCRE。相比較而言PCRE要強大些,POSIX C正則庫就足夠使用。
其次,進行網頁分析的時候,對算法也要有一定的了解:
(1)基于網絡拓撲的分析算法:基于網頁之間的鏈接,通過已知的網頁或數據,來對與其有直接或間接鏈接關系的對象(可以是網頁或網站等)作出評價的算法。又分為網頁粒度、網站粒度和網頁塊粒度這三種。
(2)基于網頁內容的網頁分析算法:基于網頁內容的分析算法指的是利用網頁內容(文本、數據等資源)特征進行的網頁評價。網頁的內容從原來的以超文本為主,發展到后來動態頁面(或稱為hidden web)數據為主,后者的數據量約為直接可見頁面數據(PIW,publiclyIndexable Web)的400~500倍。
以上便是小編對“我們如何進行網頁分析?”的大致介紹,希望能有所幫助!
idy流處理數據越來越流行,我想這與管道符%>% 的使用,數據處理動詞化,有著很重要的關系。
用最少的時間,解決最重要的、最常見的問題,我把這稱為是高效;剩余的難點,我把其稱為提高。
filter動詞的使用
首先需要明確的是
filter針對的是"行"的操作, select是針對列的操作
在這個基礎之上,展開實戰 使用nycflights13 包中的數據進行演示
觀察數據特點
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>
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>
或者直接賦值給某一個變量
jan1 <- filter(flights, month == 1, day == 1)
插一個操作技巧,在變量兩側加上括號,也可以直接顯示,結果
(jan1 <- filter(flights, month == 1, day == 1))
“&” 是“和”,“|” 是“或”,“!"指代“不是”
加上邏輯運算符,配合管道符,就可以進行多項條件選取的操作。 例如,要選取月份為11和12的觀察選項,就會有兩種寫法
filter(flights, month == 11 | month == 12)
或者
nov_dec <- filter(flights, month %in% c(11, 12))
%in%是匹配符,在判斷的時候經常用到
https://r4ds.had.co.nz/transform.html
擊上方關注,All in AI中國
我經常告訴我的同事和其他程序員一些我在R中使用的簡單的東西,它們可以幫助我完成需要改進的任務。這些方法從簡單的快捷方式、鮮為人知的函數到方便的小技巧都有。
由于R生態系統如此豐富且不斷增長,人們往往會錯過一些能夠幫助他們完成任務的事情。所以我經常得到一些驚訝的反應,就像我從來不知道那樣!
這里有十件讓我的生活更輕松的事情。如果你已經全部了解它們,很抱歉浪費你的閱讀時間,請考慮添加一些評論,其中包含你認為對其他讀者有益的其他內容。
我喜歡swith()。它基本上是根據另一個變量的值來選擇其值的if語句的一個方便的縮寫。我發現當我編寫代碼時,根據您先前的選擇需要加載不同的數據集時,它特別有用。例如,如果您有一個名為animal的變量,并且您想要根據動物是狗、貓還是兔子加載不同的數據集,您可以寫下:
data <- read.csv( switch(animal, "dog" = "dogdata.csv", "cat" = "catdata.csv", "rabbit" = "rabbitdata.csv") )
這在Shiny應用程序中特別有用,您可能希望根據一個或多個輸入菜單選項加載不同的數據集甚至環境文件。
這不僅僅是一個R技巧,更多是關于RStudio IDE的更多內容,但是可用于常用命令的快捷鍵非常有用,可以節省大量的輸入時間。我最喜歡的是Ctrl + Shift + M用于管道運算符%>%,用Alt + - 用于賦值運算符< - 。如果你想看到一整套這些很棒的快捷方式,只需在RStudio中鍵入Atl + Shift + K即可。
如果您希望快速啟動Shiny儀表板,并且操作簡單,那么flexdashboard軟件包可以滿足您的一切需求。它提供了簡單的HTML快捷方式,可以輕松構建側邊欄,并將顯示組織成行和列。它還有一個超級靈活的標題欄,您可以將應用程序組織到不同的頁面,并放入圖標和指向Github代碼或電子郵件地址或其他任何內容的鏈接。作為在RMarkdown中運行的軟件包,它還允許您將所有應用程序保存在一個Rmd文件中,而不是需要將其分解為單獨的服務器和UI文件,例如shinydashboard。每當我需要創建儀表板的簡單原型版本,然后再將其轉移到更高級的設計時,我就會使用flexdashboard。我經??梢允褂胒lexdashboard在一小時內啟動并運行儀表板。
R Shiny開發可能令人沮喪,特別是當您收到通用錯誤消息時,無法幫助您了解底層出現的問題。隨著Shiny的發展,越來越多的驗證和測試功能被添加,以幫助更好地診斷和警告特定發生的錯誤。req()函數允許您阻止操作發生,除非環境中存在另一個變量,但是靜默地執行操作而不顯示錯誤。因此,您可以使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!") ) })
在呈現輸出之前進行validate()檢查,并且如果某個條件未滿足,則允許您返回定制的錯誤消息,例如,如果用戶上載了錯誤的文件:
# 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 })
如果要共享需要登錄憑據到數據庫之類的代碼,則可以使用系統環境來避免將這些憑據發布到Github或其他可能存在風險的空間。您可以將憑據作為命名環境變量放在R會話中,例如:
然后在共享腳本中,您可以使用這些環境變量登錄。例如:
# 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 })
更方便的是,如果你經常使用這些憑證,你可以在操作系統中將它們設置為環境變量,這樣當你在R中工作時它們總是可用,但你不必在你的代碼中顯示它們。
您的代碼可能不像您所希望的那樣整潔,您沒有時間對其進行編輯。stylerpackage具有許多功能,允許自動重新編碼代碼以匹配tidyverse風格。它非常簡單,就像在你的凌亂腳本上運行styler :: style_file(),它將為你做很多(雖然不是全部)工作。
所以你寫了一個可愛的R Markdown文檔,你已經分析了很多關于狗的事實。然后你會被告知 - '不,我對貓更感興趣。如果將R標記文檔參數化,則只需一個命令就可以自動生成關于貓的類似報告。
您可以通過在R Markdown文檔的YAML標題中定義參數,并為每個參數賦值來完成此操作。例如:
現在,您可以將這些變量寫入文檔中的R代碼,如params 和
years_of_study。如果您正常編織文檔,它將根據值變量使用這些參數的默認值進行編織。但是,如果您通過在RStudio的Knit下拉列表中選擇此選項來編織參數(或使用knit_with_parameters()),則會出現一個可愛的菜單選項,您可以在編織文檔之前選擇參數。
用參數編織
revealjs是一個包,它允許您使用帶有嵌入式R代碼的直觀幻燈片導航菜單以HTML格式創建精美的演示文稿。它可以在R Markdown中使用,并且具有非常直觀的HTML快捷方式,允許您使用各種樣式選項創建漂亮幻燈片的嵌套邏輯結構。演示文稿是用HTML表示的,這意味著人們可以通過他們的平板電腦或手機聽你說話,這非常方便。您可以通過安裝包然后在YAML標頭中調用它來設置revealjspresentation。這是我最近使用revealjs發表的演講的YAML標題示例
-- 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 ---
這是一個示例頁面。您可以在此處找到代碼和演示文稿hr_meetup_london/presentation.Rmd at master · keithmcnulty/hr_meetup_london · GitHub
使用revealjs輕松進行在線演示
大多數人沒有充分利用R Shiny中提供的HTML標簽。有110個標簽提供各種HTML格式和其他命令的快捷方式。最近我構建了一個應用程序,花了很長時間來執行任務。知道用戶在等待它完成時可能會出現多任務,我使用標簽$ audio讓應用程序大肆宣傳,以便在任務完成時提醒用戶。
這個贊美包非常簡單但也很棒,給用戶帶來了好評。雖然這看起來像是毫無意義的自我欽佩,但它實際上在編寫R包時非常有用,如果他們做正確的事情,例如如果一個過程成功完成,你可以向某人提供贊美或鼓勵。您也可以將它放在復雜腳本的末尾,以便在成功運行時為您提供額外的快樂。
最初我是一名純數學家,然后我成為了一名心理測量學家和一名數據科學家。我熱衷于將所有這些學科的嚴謹性應用于復雜的人們問題。我也是一名編碼極客,也是日本角色扮演游戲的忠實粉絲。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。