R語言中使用subset函數對數據進行分類管理操作

2021-03-02 零基礎說科研

我們在SCI論文中常常可以見到這樣的表格,是根據分類來做出統計結果的,如下圖,是根據患者是否存活把患者分成了兩類倖存的和死亡的做分別統計,然後得出各類統計結果

那麼,R語言是怎麼做出這樣的表格呢?首先我們要把數據進行分割,得到一個倖存的數據表和一個死亡的數據表,然後再分別統計,我們今天利用R語言自帶的subset函數來演示這一功能,這是一個非常重要的功能,為今後我們對數據進一步分析做準備。

我們使用SPSS自帶的一個Breast cancer survival腫瘤數據來演示,首先我們把這個數據導入R,並且刪除缺失值

library(foreign)

library(survival)

bc <-read.spss("E:/r/Breast cancer survival agec.sav",

                use.value.labels=F,to.data.frame=T)

bc <-na.omit(bc)

查看一下bc這個數據集的結構

head(bc)

age表示年齡,pathsize表示病理腫瘤大小(釐米),lnpos表示腋窩淋巴結陽性,histgrad表示病理組織學等級,er表示雌激素受體狀態,pr表示孕激素受體狀態,status結局事件是否死亡,pathscat表示病理腫瘤大小類別(分組變量),ln_yesno表示是否有淋巴結腫大,time是生存時間,後面的agec是我們自己設定的,不用管它。

在英文中subset就是亞組和子集的意思,R語言中subset函數就是用來構造子集的,我們使用這個功能來對數據進行分組。Subset函數使用最少要指定兩個指標,一個是數據集,一個是變量。ln_yesno只有兩個變量0和1,0表示沒有淋巴結腫大,1表示有淋巴結腫大,我們現在使用ln_yesno這個指標把患者分成兩組,一組是由淋巴結腫大的,一組是沒有淋巴結腫大的。

ln_yesno0<-subset(bc,bc$ln_yesno<1)#我們告訴subset 函數在ln_yesno這個變量中取小於1的指標,也就是0

同理輸入

ln_yesno1<-subset(bc,bc$ln_yesno>=1)

這樣就得到了兩個數據框ln_yesno0和ln_yesno1分別代表一組是由淋巴結腫大的,一組是沒有淋巴結腫大的。說了一大堆,其實代碼就是幾行,非常簡單。

動動小手關注一下吧,更多精彩文章盡在零基礎說科研

相關焦點

  • 【R每日一貼】subset()函數使用??
  • 從零開始的R語言開荒日記 | 假期R語言速成(三)R的簡單數據操作與數據管理
    本期將基於《R語言實戰》第2版對這兩部分內容進行介紹。(如果你不喜歡用代碼來預處理,也可以用Excel等方法處理後再導入R,完全取決於數據處理的需求與個人習慣)。用鍵盤輸入是最基本的導入方法,該過程中會使用edit()或fix()函數。如下圖所示,第一行生成了一個依次包含數值型、字符型與邏輯型變量的數據框,雖然指定了數據框各個變量的模式,但沒有實際數據。
  • R語言的數據管理
    這部分內容為我學習《R語言實戰》中數據管理的部分所做的筆記。
  • R語言data manipulation學習筆記之subset data
    個人博客: https://ytlogos.github.io/公眾號:生信大講堂往期回顧數據分析過程中我們常常需要從數據集中抽取部分數據,本文將介紹如何提取子數據集,主要利用R自帶的函數,以後會專門介紹data manipulation包dplyr。
  • R 語言中常用的文件操作及字符串相關函數
    值得注意的是,銀河統計工作室最早發布的「R 語言文件管理系統操作」一文詳細地總結了基礎函數在文件管理與路徑相關操作上的函數。這個問題,還是要歸咎到 R 語言包編寫的習慣上,作者定義的名稱並不是指的某一個對應的函數,準確地來說,是這個語義下的某一類別的函數,比如說 fs.pdf 中目錄的前幾個標題:copy, create, delete 就是這樣的,將一類函數進行匯總。因此 pdf 的目錄並不能準確地反映出它裡面到底有多少個函數。因此使用正則表達式來獲取某一前綴或者是某一後綴的函數名則至關重要。
  • 對照著Excel入門R語言表格數據處理
    這裡主要推薦使用dplyr包對數據進行分類匯總,主要用到以下幾個函數:filter():按記錄數值篩選,針對表格的「
  • R語言從入門到精通:Day5-R語言數據操作示例及數據
    話不多說,我們進入這次課程的主要內容,上節課中完成了R語言中的數據導入工作,那麼這次課程的主要內容就是給大家介紹一些數據管理和操作的基本函數或語句。1、本節內容重點內容較多,      務必緊跟紅色標記。2、測試數據及代碼      見文末客服小姐姐二維碼。一般來說,創建新變量是項目中必不可少的步驟。
  • R語言中plyr包
    這一類函數本質上是將數據進行分割、計算和整合。它們在數據分析的各個階段都有很好的用處。例如在數據準備階段,我們可以按某個標準將數據分組,然後獲得各組的統計描述。或是在建模階段,為不同組的數據建立模型並比較建模結果。apply族函數與Google提出的mapreduce策略有著一致的思路。因為mapreduce的思路也是將數據進行分割、計算和整合。只不過它是將分割後的數據分發給多個處理核心進行運算。
  • 全棧數據之R語言常用包和函數
    全棧數據之路系列:全棧數據之Linux常用命令總結全棧數據之MySQL常用命令總結全棧數據之Python常用工具和函數《R語言實戰》,這是高濤、肖楠等翻譯的一本書詳細全面介紹了入門、圖形、統計、回歸、方差、功效分析、廣義線性模型、主成分、因子分析
  • R語言常用數據處理代碼整理
    在收集好臨床數據,經過初步處理後,就可以導入到R軟體中去。R在進行統計分析前,常常需要對數據進行處理,使數據結構符合我們的統計需要,比如說變量因子化、創建新變量、變量類型轉化等等,因此數據處理是R進行統計分析前很重要的步驟。現基於各類R語言入門書整理R中常見的數據處理代碼。
  • R語言-stringr-字符串處理
    R包stringr處理字符相對簡單,尤其是我常用Power BI,但是對M語言不熟悉,不會處理字符數據,往往我就先利用R清洗字符數據列。本文記錄工作中常用的字符處理函數,部分案例照搬R for Data Science的字符部分。
  • R語言基於dplyr實現數據快捷操作
    R語言在處理大數據方面一直是被人詬病的地方,那麼有人就為R語言打造了一個dplyr包可以實現高效的數據預處理,減少內存的消耗,提升處理效率
  • 把數據輸入R語言後,如何進行簡單的操作(二)
    ## 3 59 2 excellent FALSE## 4 60 2 poor TRUE## 5 20 1 excellent FALSE接下來我們就以mydata為例,介紹一下如何對數據框進行簡單的操作
  • R語言 | 數據框data.frame操作一網打盡
    函數中對全局的變量進行賦值,那麼需要使用<<-這樣一個運算符。(8)使用SQL查詢Data Frame對於使用了多年SQL的人來說,如果能夠直接寫SQL語句對Data Frame進行查詢操作,那真是太酸爽了,結果還真有這麼一個包:sqldf包。
  • R語言從入門到精通:Day6-R語言數據操作進階及控制結構
    數據處理是R語言和數據挖掘的重要基礎,要求大家務必熟練操作,所以今天我們就從一個簡單的實例出發,給大家繼續講解數據處理進階及控制結構。1、本節內容重點內容較多,      務必緊跟紅色標記。2、測試數據及代碼      見文末客服小姐姐二維碼。
  • R語言數據處理方法~小結
    R自帶函數2. reshape2數據重構3. dplyr4. tidyr5. 字符串處理1. R自帶函數1.1 轉置使用函數t()可對一個矩陣或數據框進行轉置,對於數據框,行名將變成變量(列)名。2. reshape2包首先將數據「融合」(melt),以使每一行都是一個唯一的標識符-變量組合。然後將數據「重鑄」(cast),可以使用任何函數對數據進行整合成想要的任何形狀。
  • 乾貨 掌握R語言中的apply函數族
    原因在於R的循環操作for和while,都是基於R語言本身來實現的,而向量操作是基於底層的C語言函數實現的,從性能上來看,就會有比較明顯的差距了。那麼如何使用C的函數來實現向量計算呢,就是要用到apply的家族函數,包括apply, sapply, tapply, mapply, lapply, rapply, vapply, eapply等。
  • R語言 | 數據操作dplyr包
    [更新~] Python網絡爬蟲與文本數據分析公眾號只帶著Python字眼,卻分享著R語言,不務正業,任性了~dplyr簡介dplyr是R語言的數據分析包,很像python中的pandas,能對dataframe
  • R語言中使用scan函數讀取文件中的數據
    在上一篇文章中介紹了使用scan函數從鍵盤中獲取數據的方法,本篇文章將介紹scan函數的另外一個常用功能:從文件中獲取數據。從文本文件中讀取數據假設在R的當前工作目錄中有一個文件:student.txt,其存儲的數據如下圖所示,每個數據以空格分隔。
  • R語言SQL管理資料庫的方法
    #使用SQL語句操作數據框,需要加載的程序包sqldf,tcltk,使用iris數據集以及演示library(sqldf)library(tcltk)head(iris)#了解數據集由5各變量組成#取出前幾行a1r <- head(iris,10)#一般方法a1s <