中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

tidyr包中的基本函數怎么用

發布時間:2022-01-05 20:42:13 來源:億速云 閱讀:130 作者:iii 欄目:大數據

這篇文章主要介紹“tidyr包中的基本函數怎么用”,在日常操作中,相信很多人在tidyr包中的基本函數怎么用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”tidyr包中的基本函數怎么用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

長數據就是一個觀測對象可由多行組成,而寬數據則是一個觀測僅由一行組成。

#載入所需的R包

library(dplyr)

library(tidyr)

#測試數據集

widedata <- data.frame(person=c('A','B','C'),grade=c(5,6,4),score=c(89,98,90))

widedata

  person grade score

1      A     5    89

2      B     6    98

3      C     4    90

一 寬數據轉為長數據

gather(): 類似于reshape2包中的melt()函數;

gather(data, key, value, … , na.rm = FALSE, convert = FALSE):

data:需要被轉換的寬形表

key:將原數據框中的所有列賦給一個新變量key

value:將原數據框中的所有值賦給一個新變量value

...:可以指定哪些列聚到一列中

na.rm:是否刪除缺失值

將示例數據集轉成長數據:

longdata <- gather(widedata, variable, value)

longdata

 variable value

1   person     A

2   person     B

3   person     C

4    grade     5

5    grade     6

6    grade     4

7    score    89

8    score    98

9    score    90

只把制定變量從寬數據變成長數據的功能,person不變成長數據

gather(widedata, variable, value, -person)

  person variable value

1      A    grade     5

2      B    grade     6

3      C    grade     4

4      A    score    89

5      B    score    98

6      C    score    90

gather()函數比reshape2包中melt()函數的優勢: 它可以只gather若干列而其他列保持不變:

age <- c(20, 21, 22)

wide <- data.frame(widedata, age)

wide

  person grade score age

1      A     5    89  20

2      B     6    98  21

3      C     4    90  22

先對widedata增加一列 age. 整合兩個變量之間的若干列, 而保持其他列不變:

long <- gather(wide, variable, value, grade:age)

long

  person variable value

1      A    grade     5

2      B    grade     6

3      C    grade     4

4      A    score    89

5      B    score    98

6      C    score    90

7      A      age    20

8      B      age    21

9      C      age    22

二 長數據轉為寬數據

spread():類似于reshape2包中的cast()函數;

spread(data, key, value, fill = NA, convert = FALSE, drop = TRUE)

data:為需要轉換的長形表

key:需要將變量值拓展為字段的變量

value:需要分散的值

fill:對于缺失值,可將fill的值賦值給被轉型后的缺失值

將長數據轉成寬數據:

wide <- spread(long, variable, value)

wide

  person age grade score

1      A  20     5    89

2      B  21     6    98

3      C  22     4    90

這實際將原來gather后的結果還原為gather前, 但各列的相互位置稍有調整.

三 多列合并為一列

unite(data, col, … , sep = " ")

data::表示數據框,

col:表示合并后的列名稱,

… :表示需要合并的若干變量,

sep: = " "用于指定分隔符,

remove:是否刪除被組合的列

把widedata中的person,grade, score三個變量合成一個變量information, 并變成"person-grade-score"的格式

wideunite<-unite(widedata, information, person, grade, score, sep= "-")

wideunite

  information

1      A-5-89

2      B-6-98

3      C-4-90

四 一列分離為多列.

separate(data, col, into, sep = " ")

data:為數據框

col:需要被拆分的列

into:要拆分為的(多個)列, 通常用c()的形式進行命名

sep : = " " 用于指定分隔符

remove:是否刪除被分割的列

用separate函數將上面的wideunite數據框還原:

widesep <- separate(wideunite, information,c("person","grade","score"), sep = "-")

widesep

  person grade score

1      A     5    89

2      B     6    98

3      C     4    90

可見separate()函數和unite()函數的功能是相反的.

五 缺失值填充

示例數據集,增加NA值

NAdata <- data.frame(person=c('A','B','C','D'),grade=c(5,NA,4,7),score=c(89,98,NA,89))

NAdata

  person grade score

1      A     5    89

2      B    NA    98

3      C     4    NA

4      D     7    89

計算x的均值和中位數

x_mean <- mean(NAdata$grade, na.rm = TRUE)

x_median <- median(NAdata$grade, na.rm = TRUE)

計算y的眾數

y_mode <- as.character(NAdata$score[which.max(table(NAdata$score))])

用特定值進行NA填充:

NAdata2 <- replace_na(data = NAdata, replace = list(grade = x_mean, score = y_mode))

NAdata2

  person    grade score

1      A 5.000000    89

2      B 5.333333    98

3      C 4.000000    89

4      D 7.000000    89

到此,關于“tidyr包中的基本函數怎么用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

定陶县| 临沧市| 南康市| 什邡市| 合作市| 东明县| 鄂尔多斯市| 东兴市| 富锦市| 天柱县| 永康市| 九龙城区| 桂东县| 若羌县| 栖霞市| 图片| 宜兴市| 广宁县| 城口县| 白水县| 湾仔区| 灵璧县| 乐山市| 资中县| 临澧县| 鄂州市| 彭泽县| 大埔县| 宿州市| 丰宁| 甘洛县| 枣庄市| 大丰市| 西吉县| 遂溪县| 乌拉特前旗| 河北省| 共和县| 淮南市| 陆河县| 固原市|