2013-06-28 2 views
1

Я пытаюсь создать 0 и 1 для отсутствия и присутствия. мои данные - это сегменты линии, и я должен наложить 0 или 1 на и интервал 0,1 для точек, которые лежат внутри сегмента или точек вне сегмента.отображение наличия и отсутствия в r

V1 V2 V3 V4  V5 V6 V7 
3 17 26.0 26.0 0 12-Jun-84 1 0 
4 17 48.0 48.0 1 12-Jun-84 3 0 
5 17 56.7 56.7 0 12-Jun-84 1 0 
143 17 16.3 16.3 0 19-Jun-84 1 8 
144 17 17.7 17.7 0 19-Jun-84 1 8 
145 17 22.0 22.0 0 19-Jun-84 1 8 

v2 и v3 являются начало и конечные точки и v4 это разделение между ними.

я попробовал

tran17 <- seq(0, 80, by=0.1) 
tran17.date1 <- rep(0, length(tran17)) 
## 
sub1 <-which(tran17 >= c$V2[i] & tran17 <= c$V3[i]) 
tran17.date1[sub1] <- 1 

Thankyou

+2

Может быть, вы должны объяснить, почему разделение btwn 48,0 и 48,0 означает 1? Или еще продемонстрировать, какой результат нужен? И ... это, должно быть, множество строк, по одному для каждой строки или V1 должно быть идентификатором группы? –

+0

данные взяты из очень старого набора данных и, как указано выше. Мне не разрешено редактировать его, хотя есть такие расхождения. v1 - это строка в изображении. вышеупомянутые записи являются отрезками строки в строке 17. Я хочу сгенерировать координаты, так что по этой строке я получаю значение каждые 0,1 единицы или около того, а затем получаю значение (0 или 1) от того, находится ли эта точка в зараженном разделе или не. Мне нужны координаты этих точек для генерации вариограммы. v7 - число дней, которое должно быть осью y, а v2 - осью x. – Noella

+0

Мне нужно создать участок пузырька из этих точек. – Noella

ответ

1

Игнорирование ваш пример данных и фокусирование на ваш вопрос, я думаю, что это решает проблему. Кроме того, если V1 является фактором группировки, вы можете использовать tapply по сравнению с PAmatrix.

# test data 
sed.seed(1104) 
dat = data.frame(V1=17, V2=runif(200, 10, 60)) 
dat$V3 = dat$V2 + runif(200, 0, 20) 
dat$V4 = dat$V3 - dat$V2 

    V1  V2  V3   V4 
1 17 37.25826 45.54194 8.2836734 
2 17 17.44098 22.86841 5.4274331 
3 17 49.78488 55.51627 5.7313965 
4 17 51.66640 52.54813 0.8817293 
5 17 21.84276 39.38477 17.5420079 
6 17 53.39457 54.51613 1.1215530 

# functions to solve the problem 
isInside = function(limits, tran) as.numeric(tran>=limits[1] & tran<=limits[2]) 
PAmatrix = function(data, tran) t(apply(data, 1, isInside, tran=tran)) 

# calculate the PA matrix 
tran17 = seq(0, 80, by=0.1) 
PA17 = PAmatrix(data=dat[,c("V2","V3")], tran=tran17) 

# plot the results 
image(seq(nrow(dat)), tran17, PA17, col=c("blue", "red")) 

theplot

+0

привет Рикардо, результат, на который я надеюсь, - это график пузырьков скоординированных 1, построенных против V7. Спасибо. – Noella

+0

Причиной для построения пузырьков является отображение точек в виде переменной, из которой я должен иметь возможность генерировать вариограмму. извините за неясность. – Noella

+0

@immie: ваш вопрос плохо отредактирован, и ваш набор данных не соответствует вашему описанию. Легко будет помочь, если вы предоставите воспроизводимый пример: http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

0
tran17 <- seq(0, 80, by=0.1) 

< tran17.date1 - Rep (0, длина (tran17))

< дм - который (с $ V5 == "31-июля-84")

для (я в ом) { печати (я) sub1 < -Каких (tran17> = с $ V2 [I] & тра an17 < = с $ V3 [я]) tran17.date1 [sub1] < - 1

}

участок (tran17, tran17.date1)