2012-09-23 54 views
-1

可能重複:
R filtering out a subset排除值交叉表

我有一個ř數據集。在這個數據集中,我希望使用兩個範疇變量的包gmodels創建一個交叉表,然後對它們運行一個chisq.test。 這兩個變量是witnessagegroupwitness由具有值1,2和9的觀察值組成。agegroup由值1,2組成。 我希望從表中排除值witness=9或/和第三個變量EMS=2,但我不知道如何繼續。

library(gmodels) 
CrossTable (mydata$witness, mydata$agegroup) 
chisq.test (mydata$witness, mydata$agegroup) 

...所以我的問題是,我該怎麼辦上述與witness!=9EMS!=2

+0

你的意思是你如何子集你的數據? –

+0

只需要在交互式會話中使用恰當命名的'subset()'函數或者使用'[''提取操作符']來首先對數據進行子集分析。嘗試[this](http://stackoverflow.com/search?q= [r] +子集)搜索SO。 – Chase

+0

謝謝你們。不會進行子集創建新的數據集,那些觀察結果被刪除?我對SAS的if/when/where函數感興趣,它被分配給每個任務而不是提取.. – SR441

回答

1
data: 
    witness agegroup EMS 
    1 1 2 
    2 2 2 
    1 1 2 
    2 1 2 
    9 2 2 
    2 2 2 
    1 2 2 
    9 2 2 
    2 1 2 
#save the data in your current working directory 

data <- read.table("data", header=TRUE, sep = " ") 

data$witness[data$witness == "9"] <- NA 

mydata <- data[!is.na(data$witness),] 

library("gmodels") 

CrossTable(mydata$witness, mydata$agegroup, chisq=TRUE) 

您可以將變量「EMS」,在「MYDATA」的條件。它對你的分析沒有任何壞處! HTH

+0

非常感謝sathish ..我可能沒有表達清楚自己;實際上EMS是一個具有值1和2的變量。每次EMS的值爲2而不是1時,我想排除分析中的數據 – SR441

1

我期待這個問題被關閉,因爲它真的好像是重複的。但是,由於建議了ChaseI,我認爲某種形式的子集化是最簡單的方法。

mydata[mydata$witness !=9 & mydata$EMS !=2,]