重塑與整合資料集 reshape包

2021-07-10 09:46:04 字數 3463 閱讀 3015

重塑資料時,通過修改資料的結構(行和列)來決定資料的組織方式。

整合資料時,往往將多組觀測替換為這些觀測計算的描述性統計量。

整合函式的語法:

aggregate(x,by,fun)

x是待摺疊的資料的物件,by是乙個變數名組成的列表,這些變數將被去掉以形成新的觀測;fun是用來計算描述性統計量的標量函式,它將被用來計算新觀測中的值。

# 根據氣缸數和檔位數整合mtcars資料,並返回各個數值型變數的均值

options(digits = 3)

attach(mtcars)

aggdata <- aggregate(mtcars,by=list(group.cyl = cyl,group.gear = gear), fun=mean,na.rm=true)

aggdata

reshape包中的函式提供了解決彙總問題(重塑與整合)的統一辦法,該包的核心思想是創造乙個熔化的資料集版本(通過melt函式),然後將其投入(cast函式)到乙個所希望的目標物件中。

通過melt函式「熔化」乙個資料框、列表或陣列,以使每一行都是乙個唯一的識別符號—變數組合;

首先需要將變數分成編號變數和分析變數。預設情況下,該函式將因子和整數值變數設為編號變數,其餘變數為分析變數

資料集的融合是將它重構為這樣一種格式:每個測量變數獨佔一行,行中帶有要唯一確定這個測量所需的識別符號變數。

melt函式語法:

1)熔化乙個資料框:id.vars指定編號變數,measure.vars指定分析變數

melt(data, id.vars, measure.vars,

variable_name = 「variable」, na.rm = !preserve.na, preserve.na = true, …)

2)熔化乙個陣列

melt(data, varnames = names(dimnames(data)), …)

3)熔化乙個列表

melt(data, …, level=1)

應用:本文所採用的資料為r自帶的資料集state.x77、iris及隨機數生成的資料框

library(reshape)

#生成美國50個州的人口、收入的資料

states <- data.frame(state = row.names(state.x77),region = state.region,

state.x77,row.names = 1:50)

#檢視資料集

head(states)

#採用melt函式熔化資料框(states)

m_states <- melt(states)

head(m_states)#在不指定編號變數時,melt會顯示被自動轉為編號變數的變數名稱

#可以通過id.vars和measure.vars引數指定感興趣的分析變數和分組變數

head(melt(states,id.vars = 'state',measure.vars = 'income'))

我們發現上面的「熔化」資料,除了指定的或缺省的id變數,還會額外產生variable變數和value變數,這兩個變數分別存放感興趣的分析變數名稱和實際的數值.

通過melt函式,將資料框「熔化」後放入cast函式進行統計彙總。

cast函式語法如下:

cast(data, formula = … ~ variable, fun.aggregate=null, …,

margins=false, subset=true, df=false, fill=null, add.missing=false,

value = guess_value(data))

其中data為乙個「熔化」後的物件;

formula為顯式公式,公式左邊代表輸出結果的行變數,右邊則代表輸出結果的列變數;

fun.aggregate為彙總函式,預設情況下使用length,最關鍵的是該引數可以指定乙個自編函式。

應用:計算按地區分組的每個變數的均值

reg_mean1

<- cast(m_states,region~variable,mean)

reg_mean2

<- cast(m_states,variable~region,mean)

接下來,建立乙個自編函式應用到cast函式中,本次使用到的資料集為iris

fun <- function(x) 

#資料「熔化」與彙總

m_iris <- melt(iris)

#為了方便版面顯示,這裡將輸出結果設定為列**式

# (注意,在species前面加了.|)

summary_result <- cast(m_iris,variable~.|species,fun)

summary_result

# 如果想選擇特定的分析變數,可以通過subset引數實現,一般與%in%聯合使用。

# a%in%b 表示a的元素是否為b的子集

#分析sepal.length變數的彙總資訊

sl_summary <- cast(m_iris,species~variable,fun,

subset = variable %in% 'sepal.length')

sl_summary

對於多個變數的分組統計,cast函式中顯式公式的左邊或右邊用+連線多個分組變數

應用:使用隨機數函式生成泊松分布的離散變數

#模擬資料的生成

data

<- data.frame(x = rpois(100,2),y = rpois(100,3),

z = runif(100,10,20))

head(data)

#資料「熔化」

m_data

<- melt(data,measure.vars = 'z')

head(m_data)

#多變數分組統計

summary_data

<- cast(m_data,x+y~variable,c(mean,min,max,median))

head(summary_data)

#需要注意的是,表示式左邊的最後乙個變數是變化最快的,在這裡y是變化最快的

最後再介紹cast函式中顯式公式的幾種變形:

#以y的每乙個值單獨成乙個列,統計x分組下的彙總值

reshape1

<- cast(m_data,x~y+variable,mean)

reshape1

#用豎線(|)隔開variable和y,返回列表形式,y值為列表的元素,元素內容又以x分組統計

reshape2

<- cast(m_data,x~variable|y,mean)

reshape2

sql 1 整合資料

1.讀表 create table if not exists part1 as select from odps tc 257100 f673506e024.meinian round2 data part1 create table if not exists part2 as select f...

RBAC整合資料許可權

在專案實際開發中我們不光要控制乙個使用者能訪問哪些資源,還需要控制使用者只能訪問資源中的某部分資料。控制乙個使用者能訪問哪些資源我們有很成熟的許可權管理模型即rbac,但是控制使用者只能訪問某部分資源 即我們常說的資料許可權 使用rbac模型是不夠的,本文我們嘗試在rbac模型的基礎上融入資料許可權...

整合資料備份裝置的優勢與劣勢

為資料中心設計備份解決方案基本上相當於做一塊定製化的手錶。其中的軟體需要選擇,硬體也需要配置,網路需要優化並且客戶端軟體也需要安裝。在諸多因素的干擾下,失敗的可能性很高。面對客戶環境的高度複雜性以及使用者潛在的不滿意,備份廠商們正在打造一條整合的資料保護解決方案。這套方案是否也合適你的場景?我們拭目...