最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

R語言學(xué)習(xí)記錄:lubridate處理時(shí)序數(shù)據(jù)計(jì)算某一區(qū)間的均值和sum

2022-05-11 01:48 作者:孤獨(dú)的王大老實(shí)  | 我要投稿

前一段時(shí)間幫師妹處理了一個(gè)數(shù)據(jù),也借這個(gè)機(jī)會進(jìn)一步學(xué)習(xí)了一下lubridate包。

數(shù)據(jù)描述:

數(shù)據(jù)長這樣


需求:

求ABC三個(gè)變量每天7點(diǎn)到11點(diǎn)之間的均值,以及D變量每天的sum

處理思路和過程:

1.首先先把xlsx文件導(dǎo)入進(jìn)R,關(guān)于如何用R處理excel文件可以參考往期記錄

能發(fā)現(xiàn)問題嗎?

1.1出現(xiàn)了2個(gè)問題

(1)提示有warnings

用warnings()檢查一下發(fā)現(xiàn)給的提示是這樣的

我直譯一下:“強(qiáng)迫把文本變成了數(shù)值在巴拉巴拉巴拉‘NaN’”

于是我猜測原本的數(shù)據(jù)有Na值,返回原表去檢查,果然如此

在把這些含有NaN的行刪掉后,另存為‘test1.xlsx’,然后再導(dǎo)進(jìn)R,就沒有warnings了,證明我的直譯是準(zhǔn)確的(學(xué)習(xí)英語很重要!

雖然手動在原來的excel里可以手動刪除含有NaN的行,但是并不推薦這樣做,因?yàn)閿?shù)據(jù)可能有好幾千好幾萬行,不可能一個(gè)一個(gè)去檢索NA然后刪掉,另外warnings只是代表警告,并不是說明這行代碼沒有運(yùn)行成功,所以還是在后續(xù)代碼中處理NaN較為快捷。

(2)變量‘time’列發(fā)生了改變

原來的time列是‘1:30:00’格式(時(shí)分秒hms),代表一點(diǎn)半,但是導(dǎo)入進(jìn)R后變成了年月日(ymd)的格式。

1.2關(guān)于第二個(gè)問題的解決過程

在Stack Overflow上找到了兩個(gè)類似的問題

Q1:

這個(gè)問題有三個(gè)答案:

第一個(gè)答案是利用format和hms函數(shù)進(jìn)行轉(zhuǎn)換

第二個(gè)答案是利用‘openxlsx’包讀取

但我在用這個(gè)包進(jìn)行讀取的時(shí)候失敗了,給的結(jié)果是這樣式的

當(dāng)時(shí)我也搜索了相關(guān)問題,但是具體什么原因我忘記了,反正就是還得再設(shè)置一下,我嫌麻煩就沒有再繼續(xù)探究,有了解這個(gè)問題的大手子還請多指點(diǎn)!

第三個(gè)答案是利用‘xlsx’包讀取


但是這個(gè)包我至今都library不出來,一加載就重啟(焯!)。(好像是和Java有關(guān))

Q2

第二個(gè)問題,有很詳盡的解釋,大概意思是excel和R有不同的計(jì)算日期的標(biāo)準(zhǔn)。有興趣的朋友可以前往原網(wǎng)站仔細(xì)閱讀。

2.處理導(dǎo)入的數(shù)據(jù)框

導(dǎo)入xlsx后,就要開始處理了。此處需要注意的是,我并沒有理會在第一步中出現(xiàn)的兩個(gè)問題,沒有理會問題1的原因已經(jīng)說明,不理會問題二的原因是:我發(fā)現(xiàn)如果不去管它在后面的拆分日期中也是不影響的。

2.1根據(jù)需求,把日期拆分為年、月、日、時(shí)、分

在這里還遇到了一個(gè)小小的問題,就是要求均值的三個(gè)變量,是7點(diǎn)00到11點(diǎn)00的數(shù)據(jù),如果用hour>=7&hour<=11來進(jìn)行篩選的話,會發(fā)現(xiàn)11點(diǎn)30的數(shù)據(jù)也包括進(jìn)去了。最后的解決辦法是,一個(gè)一個(gè)的指定時(shí)間點(diǎn)。新增一列‘newhour’,把數(shù)據(jù)分為兩類,一類是7點(diǎn)00到11點(diǎn)00的,標(biāo)記為y。另一類是不在這個(gè)時(shí)間區(qū)間的,標(biāo)記為n。

最終結(jié)果


2.2分別計(jì)算ABC變量的均值和D的sum


變量A每一天的7點(diǎn)到11點(diǎn)的均值

group_by函數(shù)就是用來分組,比如我這里把月、日、newhour作為分類標(biāo)準(zhǔn)進(jìn)行了分組,那么分組的結(jié)果就是5月1日y的數(shù)據(jù)為一組,5月1日n的數(shù)據(jù)為1組,5月2日y的數(shù)據(jù)為1組,5月2日n的數(shù)據(jù)為1組,以此類推。

然后再用管道傳遞給summarize函數(shù)計(jì)算均值。

2.3合并數(shù)據(jù),導(dǎo)出為csv

用全連接函數(shù)把數(shù)據(jù)框拼接,其實(shí)也可以用cbind函數(shù)。

需要注意的是:full_join函數(shù)只能兩個(gè)兩個(gè)的連,不能一股腦的把所有的數(shù)據(jù)框都扔進(jìn)去。

抒情time:

當(dāng)時(shí)隨口吹了一句牛逼說“用R處理應(yīng)該不難吧”,沒想到師妹放棄了“不食嗟來之食”的傲骨,打蛇隨棍上,我雖然心里害怕吹牛逼吹過頭,萬一弄不好咋整,但是當(dāng)時(shí)也只能硬著頭皮把這逼裝完,結(jié)果最后真的讓我2個(gè)小時(shí)給弄好了,不免有點(diǎn)沾沾自喜,甚至還發(fā)了個(gè)動態(tài)作為紀(jì)念。

現(xiàn)在想來給自己的教訓(xùn)有三點(diǎn):

  1. 不吹牛逼能死嗎!

  2. 不吹牛逼能死嗎!!

  3. 不吹牛逼能死嗎?。?!


R語言學(xué)習(xí)記錄:lubridate處理時(shí)序數(shù)據(jù)計(jì)算某一區(qū)間的均值和sum的評論 (共 條)

分享到微博請遵守國家法律
呼和浩特市| 宜兰县| 习水县| 新丰县| 万山特区| 阳泉市| 乐亭县| 湟中县| 灵武市| 师宗县| 雷州市| 泰兴市| 蛟河市| 临潭县| 剑阁县| 卫辉市| 金川县| 乐安县| 固阳县| 巴林右旗| 镇雄县| 大城县| 咸阳市| 扶沟县| 白沙| 陆川县| 屯留县| 宁远县| 星座| 上饶市| 民乐县| 泰州市| 临泉县| 西安市| 白山市| 宜昌市| 定西市| 普兰店市| 蓝山县| 招远市| 邛崃市|