2012-09-23 30 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,]