2016-08-18 30 views
2

我正在嘗試創建帶有離羣標籤的箱線圖。我的數據是長型:R - 用帶標籤的離羣值創建多列框圖

head(data.basic) 
    STATE  variable value 
1 ALABAMA FY_1998 0.363746457 
2  ALASKA FY_1998 0.632334359 
3 ARIZONA FY_1998 0.512511586 
4 ARKANSAS FY_1998 0.485002318 
5 CALIFORNIA FY_1998 0.696569322 
6 COLORADO FY_1998 0.351297291 

的目標是創建爲每個變量(即「FY_1998」:「FY_2013」​​)的箱線圖。這對於默認boxplot函數很簡單,但結果不包括帶標籤的異常值。 Car包裝中的Boxplot公式更具挑戰性。我能創造一個箱圖的一年,用下面的代碼在寬格式中的數據:

Boxplot(Basic.Assistance[["FY_1998"]], labels=rownames(Basic.Assistance)) 

然而,我無法擴展這種方法到其他變量,因此,試圖用箱線圖與長表格數據。任何幫助擴展上面的方法,包括FY_1998到FY_2013或編寫與長表格代碼相同的結果代碼將不勝感激。

我是新來的R以及這個論壇和apoligize留出任何必要的材料。請讓我知道是否需要更多的代碼或信息 - 事先要感謝。

summary(data.basic) 
STATE    variable   value   
Length:832   Length:832   Length:832   
Class :character Class :character Class :character 
Mode :character Mode :character Mode :character 
> tail(data.basic) 
     STATE variable  value 
827  VIRGINIA FY_2013 0.346652203 
828 WASHINGTON FY_2013 0.215769738 
829 WEST_VIRGINIA FY_2013 0.219831256 
830  WISCONSIN FY_2013 0.226368331 
831  WYOMING FY_2013 0.153766717 
832 AVERAGE_STATE FY_2013 0.235787342 
+0

你也許可以報告更多的'data.basic'數據框的記錄,包括一到兩個變量,如「FY_2013」​​? –

+0

我剛剛添加了summary(data.basic)以及tail(data.basic)。 – Bgg

回答

0

%%%%%射擊1:慘敗 如何:

data.basic <- read.table(head=TRUE, text=" 
     STATE variable  value 
     ALABAMA FY_1998 0.363746457 
     ALASKA FY_1998 0.632334359 
     ARIZONA FY_1998 0.512511586 
    ARKANSAS FY_1998 0.485002318 
    CALIFORNIA FY_1998 0.696569322 
    COLORADO FY_1998 0.351297291 
    VIRGINIA FY_2013 0.346652203 
    WASHINGTON FY_2013 0.215769738 
WEST_VIRGINIA FY_2013 0.219831256 
    WISCONSIN FY_2013 0.226368331 
     WYOMING FY_2013 0.153766717 
AVERAGE_STATE FY_2013 0.235787342") 

rownames(data.basic) <- data.basic$STATE 
Boxplot(value~variable, data=data.basic) 

%%%%射擊2:也許這一次更幸運?

library(dplyr) 
library(car) 
set.seed(4) 
states <- c("ALABAMA","ALASKA","ARIZONA","ARKANSAS","CALIFORNIA","COLORADO","VIRGINIA","WASHINGTON") 
data.basic <- data.frame(STATE=rep(states,2), 
         variable=rep(c("FY_1998","FY_2013"),each=length(states)), 
         value=rexp(2*length(states))) 
## This does not work:  
##Boxplot(value~variable, labels=data.basic$STATE, data=data.basic) 
yl <- range(data.basic$value) 
vars <- levels(data.basic$variable) 
npl <- length(vars) 
lapply(1:npl, function(ii) { 
    dat <- data.basic %>% filter(variable==vars[ii]) 
    rownames(dat) <- dat$STATE 
    Boxplot(value~variable, data=dat, ylim=yl, add=(ii!=1)) 
}) 
+0

我很抱歉,我不清楚。 FY1998和FY2013是第一個也是最後一個變量。從1998財年到2013財年每年都是一個變量。 – Bgg

+0

我只能使用你提供給我的兩個變量。你是否在完整的長格式數據集上嘗試了最後兩行代碼? –

+0

是的,我得到它用行號標出異常值,但它不會用行名稱重複標出異常值和州名。 – Bgg