亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

R語言將變量分組的3種方法實(shí)例(含cut函數(shù)說明)

 更新時(shí)間:2022年08月09日 10:23:36   作者:AhaBob  
在數(shù)據(jù)處理分析過程中,變量分組是經(jīng)常遇到的,下面這篇文章主要給大家介紹了關(guān)于R語言將變量分組的3種方法,其中含cut函數(shù)說明的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在數(shù)據(jù)處理的過程中,我們有時(shí)候需要將連續(xù)的數(shù)值數(shù)據(jù)轉(zhuǎn)換為類別數(shù)據(jù),比如將收入分成高、中和低三組,將學(xué)生成績分為優(yōu)、良、中、及格和不及格五組。

本來將基于R語言,采用三種方法來實(shí)現(xiàn);第一種是對(duì)變量直接進(jìn)行重新賦值,第二種是使用within函數(shù)對(duì)語句進(jìn)行組織,第三種是cut函數(shù)。

首先我們定義一個(gè)數(shù)據(jù)框,這個(gè)數(shù)據(jù)框包括學(xué)生姓名和數(shù)學(xué)成績兩個(gè)變量。

#定義數(shù)據(jù)框
mathScore <- data.frame(name=c("劉文濤","王宇翔","田思雨","徐麗娜","丁文彬","李志國","王智強(qiáng)","宋麗芳","袁芳芳","張建國"), math=c(85, 91, 74, 100, 82, 84, 78, 100, 51, 70))
head(mathScore)

接下來我們以90、80、70和60為界,將學(xué)生的數(shù)學(xué)成績分為優(yōu)、良、中、及格和不及格五類。

方法一:直接對(duì)分組變量進(jìn)行賦值

#方法一:直接對(duì)分組變量進(jìn)行賦值
attach(mathScore)
mathScore$group1[math>=90]="優(yōu)"
mathScore$group1[math>= 80 & math < 90] = "良"
mathScore$group1[math>= 70 & math < 80] = "中"
mathScore$group1[math>= 60 & math < 70] = "及格"
mathScore$group1[math < 60] = "不及格"
detach(mathScore)
head(mathScore)

這種方法較易理解,但使用attach函數(shù)可能會(huì)出現(xiàn)一些意想不到的問題,因此我們可以采用within函數(shù),對(duì)代碼進(jìn)行優(yōu)化,即方法二

方法二:使用within函數(shù)對(duì)變量進(jìn)行分組

#方法二:使用within函數(shù)對(duì)變量進(jìn)行分組
mathScore <- within(mathScore,{
  group2 <- NA
  group2[math>=90]="優(yōu)"
  group2[math>= 80 & math < 90] = "良"
  group2[math>= 70 & math < 80] = "中"
  group2[math>= 60 & math < 70] = "及格"
  group2[math < 60] = "不及格"
})
head(mathScore)

在方法二中,要注意within函數(shù)的寫法,賦值語句要用大括號(hào)括起來,并且每條賦值語句占一行。此外,在第一行首先定義了 group2 <- NA這個(gè)變量。

方法三:采用cut函數(shù)

采用cut函數(shù)也是較為常用的一種方法,但要注意的是需要對(duì)間段點(diǎn)的開閉進(jìn)行設(shè)定。

#方法三:采用cut函數(shù)
mathScore$group3 <- cut(mathScore$math, breaks = c(-Inf, 60, 70, 80, 90, Inf), labels = c("不及格","及格","中","良","優(yōu)"), right=FALSE)

在cut函數(shù)中:

  • breaks表示分界點(diǎn),Inf表示無窮大; labels表示每個(gè)類別的名稱;
  • right=FALSE表示表示區(qū)間為左閉右開,即分段時(shí)不包括右邊的點(diǎn),即良為[80,
    90);right=TRUE則表示左閉右開區(qū)間(默認(rèn)是這種情形)

我們執(zhí)行mathScore代碼,就可以看到三種方法得到的結(jié)果是一致的。

關(guān)于cut函數(shù)參數(shù)的補(bǔ)充說明:

cut函數(shù)有兩個(gè)和分界點(diǎn)相關(guān)的參數(shù),一個(gè)是include.lowest,一個(gè)是right,下面對(duì)這兩個(gè)參數(shù)進(jìn)行詳細(xì)說明。

  • right參數(shù):right=TRUE表示左閉右開區(qū)間,right=FALSE表示左開右閉區(qū)間
  • include.lowest參數(shù):表示包括最小值或包括最大值

下面通過例子說明:

為了說明問題,我們把數(shù)據(jù)再重新定義一下,比原數(shù)據(jù)加入兩行:

#重新定義一下數(shù)據(jù)框
mathScore <- data.frame(name=c("劉文濤","王宇翔","田思雨","徐麗娜","丁文彬","李志國","王智強(qiáng)","宋麗芳","袁芳芳","張建國","張志偉","李明"), math=c(85, 91, 74, 100, 82, 84, 78, 100, 51, 70, 0, NA))
head(mathScore)

我們把之前代碼改寫一下,把-Inf替換為0,把Inf替換為100,嘗試一下結(jié)果:

#問題代碼示例
mathScore$group <- cut(mathScore$math, breaks = c(0, 60, 70, 80, 90, 100), labels = c("不及格","及格","中","良","優(yōu)"), right=FALSE)
mathScore

我們可以看到輸出的結(jié)果如下:

name math group
1 劉文濤 85 良
2 王宇翔 91 優(yōu)
3 田思雨 74 中
4 徐麗娜 100 < NA >
5 丁文彬 82 良
6 李志國 84 良
7 王智強(qiáng) 78 中
8 宋麗芳 100 < NA >
9 袁芳芳 51 不及格
10 張建國 70 中
11 張志偉 0 不及格
12 李明 NA < NA >

此結(jié)果有問題,因?yàn)?00分不包括在內(nèi),因?yàn)?right=FALSE是左閉右開區(qū)間,這時(shí)就要改寫代碼,加上參數(shù)include.lowest=TRUE

如下為正確代碼示例:

#正確代碼示例
mathScore$group <- cut(mathScore$math, breaks = c(0, 60, 70, 80, 90, 100), labels = c("不及格","及格","中","良","優(yōu)"), right=FALSE, include.lowest=TRUE)
mathScore

這時(shí)的結(jié)果如下,我們發(fā)現(xiàn)是結(jié)果正確的:

name math group
1 劉文濤 85 良
2 王宇翔 91 優(yōu)
3 田思雨 74 中
4 徐麗娜 100 優(yōu)
5 丁文彬 82 良
6 李志國 84 良
7 王智強(qiáng) 78 中
8 宋麗芳 100 優(yōu)
9 袁芳芳 51 不及格
10 張建國 70 中
11 張志偉 0 不及格
12 李明 NA < NA >

因?yàn)閞ight=FALSE是左閉右開區(qū)間,加上參數(shù)include.lowest=TRUE后,意為把最大值的右端點(diǎn)包括了。

為了深入了解兩個(gè)端點(diǎn)參數(shù)的關(guān)系,我們嘗試動(dòng)下如下兩段代碼:

#對(duì)參數(shù)設(shè)置嘗試的代碼
mathScore$group <- cut(mathScore$math, breaks = c(0, 60, 70, 80, 90, 100), labels = c("不及格","及格","中","良","優(yōu)"), right=TRUE, include.lowest=FALSE)
mathScore

此代碼為左閉右開區(qū)間,不包括最小值左側(cè)端點(diǎn);

#對(duì)參數(shù)設(shè)置嘗試的代碼
mathScore$group <- cut(mathScore$math, breaks = c(0, 60, 70, 80, 90, 100), labels = c("不及格","及格","中","良","優(yōu)"), right=TRUE, include.lowest=TRUE)
mathScore

此代碼為左閉右開區(qū)間,包括最小值區(qū)間左側(cè)端點(diǎn)。

因此,right和include.lowest總結(jié)如下:

right參數(shù)include.lowest參數(shù)備注
FALSETRUE左閉右開,包括最大值端點(diǎn)
TRUETRUE左開右閉,包括最小值端點(diǎn)
TRUEFALSE左開右閉,不包括最小值端點(diǎn)
FALSEFALSE左閉右開,包括最小值端點(diǎn)

其中,cut函數(shù)默認(rèn)為right = TRUE, include.lowest=FALSE;

在實(shí)際的數(shù)據(jù)分析中,一般是將參數(shù)設(shè)置為right=FALSE, include.lowest=TRUE,即含下限不含上限,包括最大值區(qū)間右側(cè)端點(diǎn)。

總結(jié)

到此這篇關(guān)于R語言將變量分組的3種方法的文章就介紹到這了,更多相關(guān)R語言變量分組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rstudio 修改工作路徑(三種方法總結(jié))

    Rstudio 修改工作路徑(三種方法總結(jié))

    這篇文章主要介紹了Rstudio 修改工作路徑(三種方法總結(jié)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言寫2048游戲?qū)嵗v解

    R語言寫2048游戲?qū)嵗v解

    這篇文章主要介紹了R語言寫2048游戲?qū)嵗v解,文中將代碼列舉了出來,有感興趣的同學(xué)可以學(xué)習(xí)下
    2021-03-03
  • R語言向量下標(biāo)操作

    R語言向量下標(biāo)操作

    這篇文章主要介紹了R語言向量下標(biāo)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言繪制數(shù)據(jù)可視化Dumbbell?plot啞鈴圖

    R語言繪制數(shù)據(jù)可視化Dumbbell?plot啞鈴圖

    這篇文章主要為大家介紹了R語言繪制數(shù)據(jù)可視化Dumbbell?plot啞鈴圖的實(shí)現(xiàn)步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • R語言實(shí)現(xiàn)LASSO回歸的方法

    R語言實(shí)現(xiàn)LASSO回歸的方法

    這篇文章主要介紹了R語言實(shí)現(xiàn)LASSO回歸的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • R語言安裝以及手動(dòng)安裝devtools的詳細(xì)圖文教程

    R語言安裝以及手動(dòng)安裝devtools的詳細(xì)圖文教程

    R語言是一個(gè)強(qiáng)大的數(shù)據(jù)分析工具,其強(qiáng)大之處在于有各種各樣的R包幫助其實(shí)現(xiàn)各種各樣的功能,下面這篇文章主要給大家介紹了關(guān)于R語言安裝以及手動(dòng)安裝devtools的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • R語言 使用ggplot2繪制好看的分組散點(diǎn)圖

    R語言 使用ggplot2繪制好看的分組散點(diǎn)圖

    這篇文章主要介紹了R語言 使用ggplot2繪制好看的分組散點(diǎn)圖操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言ggplot2圖例修改超詳細(xì)介紹

    R語言ggplot2圖例修改超詳細(xì)介紹

    ggplot2是R語言最流行的畫圖包,基于圖層化語法的思想設(shè)計(jì)和創(chuàng)建美觀優(yōu)雅的圖形,下面這篇文章主要給大家介紹了關(guān)于R語言ggplot2圖例修改的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • R語言RCode與RStudio使用對(duì)比體驗(yàn)分析總結(jié)

    R語言RCode與RStudio使用對(duì)比體驗(yàn)分析總結(jié)

    這篇文章主要為大家介紹了R語言RCode與RStudio使用對(duì)比體驗(yàn)分析總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進(jìn)步
    2021-11-11
  • 詳解R語言中的多項(xiàng)式回歸、局部回歸、核平滑和平滑樣條回歸模型

    詳解R語言中的多項(xiàng)式回歸、局部回歸、核平滑和平滑樣條回歸模型

    這篇文章主要介紹了R語言中的多項(xiàng)式回歸、局部回歸、核平滑和平滑樣條回歸模型,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評(píng)論