2013-07-24 39 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向量來匹配這些情況和控件。實際上,我想根據Z ang匹配X的元素從匹配的數據中獲取樣本。 我該怎麼辦?得到R語言中的配對樣本

+0

此問題已被修改。 – sanaz

回答

7

其他的答案似乎認爲你正在尋找子集,但我假設(根據你使用的語言「case」和「controls」)你在談論統計意義上的匹配。如果是這樣,這聽起來像你想要的東西,像匹配的包由提供的功能,如下所示:

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,它會給你治療效果估計。

還有其他的包做配套,比如MatchItCEM,並非隨機(其中最後顯然已經從CRAN刪除),這取決於你打算什麼特別的匹配程序。

+1

多謝托馬斯, – sanaz

+0

@sanaz如果您覺得此答案有幫助,如果您可以通過[點擊答案左側的灰色複選標記]接受它會很好( http://meta.stackexchange.com/a/5235/221049)。 – Thomas

+0

你知道我怎樣才能得到比賽樣本? – sanaz

3

我想你正在尋找

Z[as.logical(X)] # case 

Z[!X]   # control 
+0

這不是我的意圖。我想匹配基於Z的X的元素。 – 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])