2016-08-01 2 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

Wouldnt просто 'Акулы <-стол (слияние $ DepthCat, as.numeric (слияние $ ID2))' работа? – rawr

ответ

1

Вы не предоставили свой полный набор данных, поэтому я создал свои собственные случайные данные. Учитывая, что заголовки столбцов, полученные из ID2, сортируются лексикографически, я предположил, что они хранятся в виде символов в ваших данных.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

Смежные вопросы