Как подмножество для определенных передач (пары A / B) в длинном списке в R? - PullRequest
1 голос
/ 14 марта 2012

У меня есть кадр данных из бортового опроса с весами и переменными на срок до 8 используемых строк: от VEH1 до VEH8.Строки обозначены как «MT - .. 1» - «MT-902».Я хочу знать, сколько переводов происходит между двумя конкретными линиями.

Я подумал, что подмножество для всех записей, где "MT-802" либо идет, либо следует за "MT-901", но я не вижу, как это сделать.

1 Ответ

1 голос
/ 14 марта 2012

Это действительно относится к stackoverflow, но вот кое-что, что может дать вам несколько указателей:

t1 <- "SAMPN  expwgt ROUTE VEH1   VEH2   VEH3  
       1      5      AB    MT-..1 MT-..2 NA 
       2      9      AC    MT-..1 MT-..2 MT-..3
       3      3      BC    MT-..2 MT-..3 NA
       4      3      BA    MT-..2 MT-..1 NA 
       5      4      CA    MT-..3 MT-..2 MT-..1
       6      4      CB    MT-..3 MT-..4 NA 
       7      2      CA    MT-..4 NA     NA"
indat <- read.table(textConnection(t1), header = TRUE)

colvf <- 4 # column of first VEH in indat
colvl <- 6 # column of last  VEH in indat
tapply( rep( indat$expwgt, colvl-colvf ), 
        list( as.matrix(indat[ ,colvf:(colvl-1)]), 
              as.matrix(indat[ ,(colvf+1):colvl]) ),  sum) 

, который производит

       MT-..1 MT-..2 MT-..3 MT-..4
MT-..1     NA     14     NA     NA
MT-..2      7     NA     12     NA
MT-..3     NA      4     NA      4
MT-..4     NA     NA     NA     NA
...