2016-08-18 26 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