今天在看《R for datascience》這本書的如何讀入數據這一章,本來覺得這個挺簡單的哈,一看發現自己還有很多不會的,索性就寫下來,大家瞅瞅吧。
parse_*()讀入數據之前一定要了解的就是這個解析函數parse_*(),它決定了軟件到底怎麼讀入某一個文件。比如相同的東西,不同的解析讀入的東西就不一樣:
今天就一起給大家寫一些常見的解析函數,一共8個parse函數:
解析數字似乎不難,但是也有地方需要注意各個國家表示數字方法不一樣:
比如有的國家用,而非.來表示小數點。這個時候就需要使用locale屬性:你可以用decimal_mark規定不同的小數點表示方法,比如:
parse_double("1.23")
#> [1] 1.23
parse_double("1,23", locale = locale(decimal_mark = ","))
#> [1] 1.23
parse_number()還有一個特性就是自動忽略數字前後的符号,在百分數和錢的解析中很常用:
parse_number("$100")
#> [1] 100
parse_number("20%")
#> [1] 20
parse_number("It cost $123.45")
#> [1] 123
而對于字符串而言,不同的字符編碼存儲方法,其打印結果不同,很多時候字符默認的編碼是UTF-8,但對于不是此方法編碼的字符,解析的時候就得在locale中給出編碼方式,否則會出現亂碼,比如:
x1 <- "El Ni\xf1o was particularly bad this year"
x2 <- "\x82\xb1\x82\xf1\x82\xc9\x82\xbf\x82\xcd"
對于上面的兩個對象進行解析,如果我們不指定正确的編碼,得到結果如下圖:
指定正确的編碼方法後,得到正确的結果:
parse_factor()
你可以直接把因子理解為分類變量,在解析因子的時候需要給出level水平,這樣的話解析時遇到的不屬于因子水平的變量時,就會自動給出提示,如下:
fruit <- c("apple", "banana")
parse_factor(c("apple", "banana", "bananana"), levels = fruit)
上面的代碼中,規定隻有兩個level水平,但是解析内容中出現了bananana,這個就自動解析為缺失值了,同時程序給出了警告。
parse_datetime()parse_datetime()是用來解析時間的,默認需要的輸入是ISO8601型的時間格式,就是“年月日時分秒”的格式,看例子:
parse_datetime("2010-10-01T2010")
#> [1] "2010-10-01 20:10:00 UTC"
# If time is omitted, it will be set to midnight
parse_datetime("20101010")
#> [1] "2010-10-10 UTC"
parse_date()這個默認的格式是4位數字的年加上- or /然後月份,然後再加- or /,然後日期,看例子:
parse_date("2010-10-01")
#> [1] "2010-10-01"
parse_time()默認的輸入是小時然後:然後分鐘:然後秒,第二個:可以省略,看例子:
library(hms)
parse_time("01:10 am")
#> 01:10:00
parse_time("20:10:01")
#> 20:10:01
重要的是我們可能有自己的輸入習慣,這個時候也可以自己設定解析方式,需要用到的方法如下:
Year
Month
Day
Time
Non-digits
這個時候不來點例子,好多同學肯定搞不明白,那就上例子:
parse_date("01/02/15", "%m/%d/%y")
#> [1] "2015-01-02"
parse_date("01/02/15", "%d/%m/%y")
#> [1] "2015-02-01"
parse_date("01/02/15", "%y/%m/%d")
#> [1] "2001-02-15"
上面的例子中,%d、%m、%y表示2位數的日月年,組合的順序不同,同樣的數字解析出來的時間就不同,上面的例子中,同樣是01,在一個中解析出來是一月份,第二個中解析出來是1日,第三個中解析出來卻是2001年。
小結今天給大家寫了常見的解析函數,其實還有文件的解析我還沒有寫,關注我,之後慢慢給大家寫,感謝大家耐心看完。發表這些東西的主要目的就是督促自己,希望大家關注評論指出不足,一起進步。内容我都會寫的很細,用到的數據集也會在原文中給出鍊接,你隻要按照文章中的代碼自己也可以做出一樣的結果,一個目的就是零基礎也能懂,因為自己就是什麼基礎沒有從零學Python和R的,加油。
(站外鍊接發不了,請關注後私信回複“數據鍊接”獲取本頭條号所有使用數據)
往期内容:
R數據分析:R Markdown:數據分析過程報告利器,你必須得學呀
R數據分析:stargazer給你一個漂亮的可以直接發表的結果表格
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!