重塑資料時,通過修改資料的結構(行和列)來決定資料的組織方式。
整合資料時,往往將多組觀測替換為這些觀測計算的描述性統計量。
整合函式的語法:
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模型的基礎上融入資料許可權...
整合資料備份裝置的優勢與劣勢
為資料中心設計備份解決方案基本上相當於做一塊定製化的手錶。其中的軟體需要選擇,硬體也需要配置,網路需要優化並且客戶端軟體也需要安裝。在諸多因素的干擾下,失敗的可能性很高。面對客戶環境的高度複雜性以及使用者潛在的不滿意,備份廠商們正在打造一條整合的資料保護解決方案。這套方案是否也合適你的場景?我們拭目...