2016-08-01 62 views
0

我有一個數據集,其中有22只動物。每個動物已被命名爲:c(" Shark1", "Shark2", "Shark3", ...)更改全球環境以數字順序閱讀

我想暗算對方兩個類別變量做決定的時間比例在不同深度所花費的每條鯊魚:

Sharks<-table(merge$DepthCat, merge$ID2) #Depth category vs. ID 


merge$DepthCat[merge$Depth2>200]<-"4" 
Sharks<-table(merge$DepthCat, merge$ID2) 

plot(t(Sharks), main="", 
    col=c("whitesmoke", "slategray3", "slategray", "slategray4"), 
    ylab="Depth catagory", xlab="Month") 
axis(side=4) 

雖然情節作品,它不是按數字順序繪製,而是按字母順序排列,因此我在下面看到下圖。

有沒有人知道如何解決這個情節?我研究了數組方法,但不確定它將如何在這裏實現。

Sharks_plot

+0

難道不只是'鯊魚< - 表(合併$ DepthCat,as.numeric(合併$ ID2))'工作? – rawr

回答

1

您沒有提供您完整的數據集,所以我生成我自己的隨機數據。鑑於來自ID2的條形頭文件按字典順序排序,我假定它們作爲字符存儲在您的data.frame merge中,所以我生成了它們。

set.seed(2L); 
NR <- 300L; 
merge <- data.frame(ID2=sample(as.character(1:22),NR,T),Depth2=pmax(0,rnorm(NR,100,50)),stringsAsFactors=F); 
merge$DepthCat <- as.character(findInterval(merge$Depth2,c(0,66,133,200))); 

str(merge); 
## 'data.frame': 300 obs. of 3 variables: 
## $ ID2  : chr "5" "16" "13" "4" ... 
## $ Depth2 : num 148.8 91.5 136.1 57.8 163.9 ... 
## $ DepthCat: chr "3" "2" "3" "1" ... 

果然,我們可以用這個測試數據重現該問題:

Sharks <- table(merge$DepthCat,merge$ID2); 

plot(t(Sharks),main='',col=c('whitesmoke','slategray3','slategray','slategray4'),ylab='Depth category',xlab='Month'); 
axis(side=4L); 

plot1


的解決方案是要挾ID2載體的數字,因此數字順序排序。

merge$ID2 <- as.integer(merge$ID2); 

str(merge); 
## 'data.frame': 300 obs. of 3 variables: 
## $ ID2  : int 5 16 13 4 21 21 3 19 11 13 ... 
## $ Depth2 : num 148.8 91.5 136.1 57.8 163.9 ... 
## $ DepthCat: chr "3" "2" "3" "1" ... 

Sharks <- table(merge$DepthCat,merge$ID2); 

plot(t(Sharks),main='',col=c('whitesmoke','slategray3','slategray','slategray4'),ylab='Depth category',xlab='Month'); 
axis(side=4L); 

plot2

+1

這是完美的,它甚至沒有跨過我的腦海,以檢查它是否是一個字符(哎呀)! –

+0

乾杯:) – bgoldst