數據運算-027篇-數據的行合併

2021-03-02 生活科學哥
生活科學哥-R語言科學 2020-10-24 6:23       有段時間沒有寫一下R的一些小操作了,因為工作實在太忙,又是要一個周末的時間,依舊早起,寫一寫碰到的操作,權作筆記。突然想起昨天上班路上,開車,聽到了個老歌,叫「瀟灑走一回」,我想,未來那一天到來的時候,我的墓志銘,上面應該是這首歌,在匆匆的人生中,我們至少要留下點東西,不是麼?        有點扯遠了哈。今天,我們來看一個合併的問題,是個簡單的操作,但是自己剛開始沒領悟,原來可以簡單實現。

  原始的數據結構如下:

library(dplyr)library(magrittr)tmp<-data.frame(x=c(1,1,2,1,2,2),y=letters[1:6])> tmp   x y1: 1 a2: 1 b3: 2 c4: 1 d5: 2 e6: 2 f

任務有兩種:

     x new    <dbl> <chr>1     1 a.b.d2     2 c.e.f

     x y     new    <dbl> <fct> <chr>1     1 a     a.b.d2     1 b     a.b.d3     2 c     c.e.f4     1 d     a.b.d5     2 e     c.e.f6     2 f     c.e.f

     其實這個任務,目的非常的明確,那麼,如何快速來實現呢?從思路上來說,其實無非就是分組,然後合併即可,簡單如下:

 tmp%>%group_by(x)%>%summarise(new=paste0(y,collapse = "."))        x new    <dbl> <chr>1     1 a.b.d2     2 c.e.f

    當時因為沒有好好理解分組與summarize的操作,以為summarize只能作一些數學的運算,其實paste0之類的,完全是可以的,比如說,計算分組之後,這些字符串的其它的運算,比如進一步算字符串的個數等:

tmp%>%group_by(x)%>%summarise(new=paste0(y,collapse = ".")%>%nchar())      x   new  <dbl> <int>1     1     52     2     5      x   new  <dbl> <int>1     1     52     2     5

 想想也是慚愧,這個本來是一個很簡單的事情,卻因為思維的固化沒想到。

   

   相比任務1,任務2也是類似,用mutate生成新列即可:

tmp%>%group_by(x)%>%mutate(new=paste0(y,collapse = "."))     x y     new    <dbl> <fct> <chr>1     1 a     a.b.d2     1 b     a.b.d3     2 c     c.e.f4     1 d     a.b.d5     2 e     c.e.f6     2 f     c.e.f

是不是挺簡單的?只要分組之後,啥都好說

   說到任務1,原來為了解決這個問題,看到一個騷操作:

library(data.table)tmp<-data.table(tmp)tmp[,lapply(.SD,paste0,collapse = "."),by=x]

可能重點就是data.table裡的一些使用,不過個人不熟,只能照代碼來弄一下,其意思就是,將原來的數據,按照x列分之後進行連接,結果是一樣的;重點是一定要加載data.table包並且把數據轉成data.table的格式。

> tmp[,lapply(.SD,paste0,collapse = "."),by=x]   x     y1: 1 a.b.d2: 2 c.e.f

   用到summarize之後,看了下幫助文件,其實裡面關於生成的數據,分組怎麼保留,有個.groups參數,值得去了解一下。

mtcars %>%     group_by(am) %>%    summarise(mpg = sum(mpg), .groups = 'drop')
mtcars %>% group_by(am, vs) %>% summarise(mpg = sum(mpg), .groups = 'drop')

> mtcars %>%+ group_by(am, vs) %>%+ summarise(mpg = sum(mpg), .groups = 'keep') am vs mpg <dbl> <dbl> <dbl>1 0 0 181.2 0 1 145.3 1 0 118.4 1 1 199.
> mtcars %>%+ group_by(am, vs) %>%+ summarise(mpg = sum(mpg), .groups = 'drop_last') am vs mpg <dbl> <dbl> <dbl>1 0 0 181.2 0 1 145.3 1 0 118.4 1 1 199.

這一類的分組是否保留,影響到下一步的操作,值得注意一下。

好了,今天的分享就到這裡,大家周末愉快。

 

1.https://stackoverflow.com/questions/62140483/how-to-interpret-dplyr-message-summarise-regrouping-output-by-x-override

往期回顧


歡迎關注與轉發,如有不懂,可以共同探討,在後臺留言或者是掃碼下方。

相關焦點

  • Excel表格數據不規範如何整理?分分鐘讓你的數據井井有條
    ,表格太亂的話,不僅影響我們查閱表格的心情,最重要的是對數據的分析,可能會導致無法運算或者出現錯誤結果等等。正確的日期格式是可以參與數據運算的,象上圖表格中的日期如果運算處理結果會出現錯誤,如何統一規範日期呢?再一個個的修改嗎?  選中日期列,依次點擊【數據】-【分列】-【下一頁】-【下一頁】,勾選【日期】,默認的【YMD】,最後點擊【完成】即可統一調整。
  • R語言數據實戰 | R中的數據類型
    除此之外,還可能需要將多個矩陣合併擴充信息量,cbind(),rbind()就可以實現最簡單的矩陣之間的合併:前者代表按列合併,後者實現按行合併。可以發現,在做乘積運算時,存儲為稀疏矩陣模式會大大提高運算效率,當矩陣維數進一步增大,它們的差距就會更加明顯。所以常做大規模矩陣運算的讀者需要注意,如果面對的矩陣很稀疏,就可以考慮使用Matrix包。
  • Python進階之路(3):提取公眾號後臺數據並數據可視化
    思路一:在進行數據可視化的時候,用該篇文章的當前粉絲數作為橫軸,用該篇文章的閱讀率作為縱軸,就可以畫出每篇文章的閱讀率分布。然後加上一條普通公眾號的平均閱讀率輔助線,就可以展現出本公眾號的閱讀率和一般公眾號相比是什麼水平。
  • 運動捕捉技術工藝流程及數據處理 ——面部運動捕捉及數據處理
    以下將主要針對面部捕捉的工藝流程和採集結果的數據修復工作進行簡要介紹。二、設備及工藝流程簡介1、設備介紹。Vicon Cara面部捕捉系統藉助可定製的頭部裝置、4個攝像頭、專用的跟蹤運算軟體、數據記錄器和照明組件,以及配套軟體CaraLive和CaraPost可實現電影級別的面部表情捕捉(如圖2)。
  • java數據類型的強制轉換及相關注意事項
    各位小夥伴們大家好,在上一篇文章中,小編介紹的是數據類型的自動轉換,這次小編要介紹的是數據類型的強制轉換。之前小編有講過,如果數據要進行自動類型轉換,就要符合從小到大的規則,如果不符合從小到大的規則,就無法進行自動類型轉換,如果這個時候就需要用到數據類型的強制轉換。在強制類型轉換中,代碼要需要進行特殊的格式處理,不能自動完成。
  • R與統計專輯第二講:運算、數據類型和向量等基本介紹
    上周,我們更新了「R與統計專輯」第一講,在以後的更新中,我們會從介紹
  • Excel也能玩轉大數據,Power Query了解一下?
    最近實務上連續遇到兩個類似的案例,合併為一個其實就是超大數據量的表格合併加透視的問題,比如從業務系統內導出一個月的數據就有30萬行以上,Excel文檔的大小在50M左右,需要合併透視整年或數年的數據。Power Pivot可以理解為透視表軟體,它比Excel內置的透視表強大了很多,一般被用來建立數據模型,對於我們來說就把他當做超級透視表就行了。
  • excel數據提取技巧:從混合文本中提取數字的萬能公式
    在上一篇文章中,小花講解了通過觀察混合文本特徵,設置特定公式,完成數據提取的三種情景。於是,有些小花瓣悄悄跟小花說:小花老師,我笨,看不出數據特徵,我又懶,不想分情景設置不同公式,有沒有那種霸王級萬能公式,啥混合文本咱都可以硬上弓?答案自然是,有的!不過,還是要區分兩種情況。
  • 流量明星數據「有水分」嗎?數據與數據之間,差異有多大?
    娛樂圈藝人的生存狀態更是如此,資本衡量藝人的商業價值完全靠數據說話。代表作和獎項在數字面前,似乎已經不值得一提。流量明星就是在這個時候誕生的。那麼,流量明星的數據有水分嗎?數據一定會很準確嗎?質疑迪麗熱巴的金鷹獎是靠刷數據刷上去的,被人稱為「水後」。趙麗穎主演的電視劇《楚喬傳》播放量400億,就被汪海林諷刺過。全球哺乳動物每隻都看一遍還不夠。楊冪主演的電視劇《三生三世十裡桃花》播放量500億,汪海林直接反駁:那就更假了。
  • 數據的消減「策略」(二)
    離散小波變換可以將一個數據向量轉換為另一個數據向量(為小波相關係數),且兩個向量具有相同長度,這一方法可以在保留數據主要特徵的情況下除去數據中的噪聲,因此該方法可以有效地進行數據清洗。 此外,在給定一組小波相關係數的情況下,利用離散小波變換的逆運算還可以近似恢復原來的數據。
  • MSSQL數據類型-浮點數據類型 (real、float、decimal、numeric)
    浮點數據類型包括real型、float型、decimal型和numeric型。浮點數據類型用於存儲十進位小數。在SQL Server 中浮點數值的數據採用上捨入(Round up)的方式進行存儲,所謂上捨入也就是,要捨入的小數部分不論其大小,只要是一個非零的數,就要在該數字的最低有效位上加1,並進行必要的進位。由於浮點數據為近似值,所以並非數據類型範圍內的所有數據都能精確地表示。real型數據的存儲大小為4個字節,可精確到小數點後第7位數字。
  • 用漫遊輿情大數據解析虎牙直播和鬥魚合併的大事件
    你聽說了嗎:虎牙直播和鬥魚合併了!  是嗎?什麼時候的事~  就是最近呀!  近些日子,關於虎牙直播和鬥魚要合併的事在網上傳的沸沸揚揚。  我們先將虎牙直播設置成「主詞」,漫遊輿情就會圍繞著主詞在全網進行抓取數據,進行匯總,但若想要更全面的監測輿情信息,你還可以設置六個副詞。  副詞的設置是為了對主詞進行更深度的挖掘 。  通過對虎牙直播周邊的熱詞進行分析、提煉,我們將「鬥魚、直播、遊戲、騰訊、B站、主播」設置成副詞。
  • 柏科數據+飛騰,數據生命周期全國產化管理
    基於數據生命周期管理的飛騰一站式架構國產化智能管理,深度洞察海量數據信息通過新一代信息技術對數字經濟下的海量數據進行數位化處理,形成結構化數據、半結構化數據和非結構化數據,其中SAP、Oracle、SQL Server資料庫裡的數據基本上都屬於結構化數據,如視頻、音頻、場景數據被稱為半結構化數據、非結構化數據。
  • 足球擁抱大數據之上篇:球探和數據,兩手都要抓
    數據分析幫渣叔紅軍上位2002年世界盃前夕,芬克爾斯坦還以評論時政為主,緊接著他轉戰無線電臺,並聽說亨利-斯科特博士開發出了一款用於預測足球比分的運算模型。芬克爾斯坦告訴The Athletic的記者:「我當時想了又想,突然就明白了,『這樣預測比分一定能行,數據也是可以收集的,模型也是可以生成的。』
  • 基於大數據的輿情分析系統架構 - 架構篇
    輿情分析系統中間和結果數據的存儲,交互分析查詢:從網頁原始數據清洗到最終的輿情報表這中間會產生很多類型的數據。這些數據有的會提供給數據分析同學進行輿情分析系統的調優,有的數據會提供給業務部門根據輿情結果進行決策。這些查詢可能會很靈活,需要我們的存儲系統具備全文檢索,多欄位組合靈活的交互分析能力。
  • Google 推出 HDR+ 連拍攝影數據集
    使用 HDR+ 拍攝的每一張照片實際上是一個合成圖,這個合成圖通過捕獲與合併快速連拍的全解析度照片生成。HDR+ 幫助 Pixel 和 Pixel 2 分別贏得了 DxO 連續兩年的最高手機相機排名。Pixel 2 上全新的人像模式也依賴於 HDR+ 來獲得基本的圖像質量和提升深度估算質量。
  • PB級數據實時分析,ClickHouse到底有多彪悍?
    通常可以將數據按天、按月做分區,根據具體情況來操作。騰訊雲的內部用戶也有按 ID 進行分區,但這樣會導致分區數量非常多,整個查詢如果設計多個 ID 會降低整體的查詢效率,這也是需要注意的地方。4. 讀寫分離頻繁的數據寫入請求會消耗大量的 CPU、內存、網卡資源,同時 ClickHouse 後臺線程也會進行數據合併的操作,佔用線程。
  • 電子存證中「哈希值」對數據的保護
    哈希後來被用於計算機領域,哈希值是對文件內容數據通過邏輯運算得到不可逆的唯一數據散列值,Hash算法也被稱為散列算法。通俗的說,每一個文件內容(文檔、圖片、音視頻等)都有唯一對應哈希值,哈希值也被稱為「數據身份證、數據指紋」。哈希值雪崩效應——「就像雪崩前,山上看上去很平靜,但是只要有一點問題,就會造成一片大崩潰",源文件少量變化會引起哈希值的很大變化。
  • R語言dplyr包學習筆記(吐血整理宇宙無敵詳細版) - CDA數據分析師
    出處:AI入門學習dplyr包主要用於數據清洗和整理,主要功能有:行選擇、列選擇、統計匯總、窗口函數、數據框交集等是非常高效、友好的數據處理包,學清楚了,基本上數據能隨意玩弄,對的,隨意玩弄,簡直大大提高數據處理及分析效率。我以為,該包是數據分析必學包之一。學習過程需要大量試驗,領悟其中設計的精妙之處。
  • Cleanits:製造業時序數據清洗系統
    根據問題定義,錯列問題出現在連續的時間區間上,因此我們設計算法逐個檢驗每個輪換的使用區間(即分析步驟二的匹配結果),將近鄰的採用相同修復模式的區間進行合併,對採用孤立修復模式的小區間進行修正,以達到提高修復度的目的。在這步算法中,我們也使用併查集結構,實現對區間合併的高效率操作。 4.