2013-07-24 3 views
-5
X<-scan() 
1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 
1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 1 
1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 

Z<-scan() 
    -0.05 0.11 -0.01 1.08 0.68 -1.79 -0.12 -0.06 0.17 -1.35 1.55 0.60 
    -1.42 -1.21 0.97 0.23 0.20 0.89 0.28 0.56 1.02 -0.32 0.20 -1.35 
    0.53 -0.52 -0.07 -1.07 0.10 0.53 0.97 0.32 -0.07 0.98 -1.23 0.72 
    -0.09 0.31 1.25 0.60 1.16 -0.98 1.63 0.72 0.24 -0.02 -1.13 0.56 
    0.78 1.75 -0.01 -0.44 0.47 -0.21 2.06 2.19 -0.94 -0.36 1.35 -1.35 
    1.50 0.13 -0.20 -0.57 -0.14 -1.34 -1.17 2.04 0.21 1.47 -1.20 -0.60 
    0.15 -0.64 -0.71 0.24 -0.86 -1.39 -0.63 -1.25 0.40 -0.76 0.73 -0.15 
    0.09 0.35 -0.19 0.29 0.56 0.82 -0.28 0.63 1.35 -0.04 1.99 1.12 
    -1.91 0.26 -1.18 -0.10 

В векторе X, 0 - контрольная группа, а 1 - группа случаев. Я хочу сопоставить эти случаи и элементы управления на основе вектора Z. Фактически я хочу сопоставить элементы X на основе Z ang, чтобы получить образцы из согласованных данных. Что мне делать?получить парный образец в языке R

+0

Этот вопрос был изменен. – sanaz

ответ

7

Другие ответы кажутся подумайте, что вы ищете подмножество, но я предполагаю (исходя из вашего использования языка «case» и «controls») что вы говорите о сопоставлении в статистическом смысле. Если да, то это звучит, как вы хотите что-то вроде функциональных возможностей, предоставляемых Matching пакета, как следующее:

library(Matching) 
out <- Match(Tr=X,X=Z) 
out$mdata # list of `Y` outcome vector (if applicable), 
      #   `Tr` treatment vector, and 
      #   `X` matrix of covariates for the matched sample 

Если у вас также есть мера результата, вы можете указать, что в Match и это даст вам оценки эффекта лечения.

Есть также другие пакеты, чтобы сделать согласование, как MatchIt, цем и неслучайной (последний из которых, по-видимому был удален из CRAN), в зависимости от того, какой именно соответствия процедуры вы собираетесь ,

+1

thanks alot Thomas, – sanaz

+0

@sanaz Если вы нашли этот ответ полезным, было бы здорово, если бы вы смогли его принять, [щелкнув серый флажок слева от ответа] (http://meta.stackexchange.com/a/5235/221049). – Thomas

+0

Знаете ли вы, как я могу получить образец матча ??? – sanaz

3

Я полагаю, вы ищете

Z[as.logical(X)] # case 

и

Z[!X]   # control 
+0

Это было не мое намерение. Я хочу сопоставить элементы X на основе Z. – sanaz

2

Я полагаю, ваш вопрос о Подменю, вот несколько примеров:

# Data 
X<-c(1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1) 
Z<-c(-0.05,0.11,-0.01,1.08,0.68,-1.79,-0.12,-0.06,0.17,-1.35,1.55,0.60,-1.42,-1.21,0.97,0.23,0.20,0.89,0.28,0.56,1.02,-0.32,0.20,-1.35,0.53,-0.52,-0.07,-1.07,0.10,0.53,0.97,0.32,-0.07,0.98,-1.23,0.72,-0.09,0.31,1.25,0.60,1.16,-0.98,1.63,0.72,0.24,-0.02,-1.13,0.56,0.78,1.75,-0.01,-0.44,0.47,-0.21,2.06,2.19,-0.94,-0.36,1.35,-1.35,1.50,0.13,-0.20,-0.57,-0.14,-1.34,-1.17,2.04,0.21,1.47,-1.20,-0.60,0.15,-0.64,-0.71,0.24,-0.86,-1.39,-0.63,-1.25,0.40,-0.76,0.73,-0.15,0.09,0.35,-0.19,0.29,0.56,0.82,-0.28,0.63,1.35,-0.04,1.99,1.12,-1.91,0.26,-1.18,-0.10) 
myMatrix <- cbind(X,Z) 

# Subsetting 
myMatrixControls <- myMatrix[ myMatrix[,1]==0,] 
myMatrixCases <- myMatrix[ myMatrix[,1]==1,] 

# Example: get sum per group 
sumZ_Contolrs <- sum(myMatrix[ myMatrix[,1]==0, 2]) 
sumZ_Cases <- sum(myMatrix[ myMatrix[,1]==1, 2])