0

我有一个名为“Item”的变量,它的级别标记为(111、112、113、114 等)。每个项目重复 20 次,每个主题一个。这些项目按行排列,每个项目都链接到因变量 (RT)。我发现有些项目需要删除(错误率高)。我应该在 R 中编写哪些代码来删除或排除数据框中的项目(111、114、222 和 319),这样我就可以在没有这些项目及其 RT 的情况下运行分析。我尝试使用 mydata 运行以下代码,但它们不起作用:

    Deleted <- droplevels(mydata[mydata$Item != "111, 114, 222, 319", ])
    summary(Deleted)

“已删除”节目的摘要仍显示这些项目

我也试过

Deleted <- names(mydata$Item) %in% c("111", "114", "214")
newdata <- qp[!Deleted]
summary(newdata)

总结后我得到以下信息

Error in z[[i]] : subscript out of bounds
In addition: Warning message:
In max(unlist(lapply(z, NROW))) :
 no non-missing arguments to max; returning -Inf

对于级别()

levels(newdata$Item)
NULL 

我觉得我错过了一些东西,但我无法弄清楚!

4

2 回答 2

1

给出mydata如下:

set.seed(1)
mydata <- data.frame(item=rep(100:400,each=20), RT=sample(0:100,6020, replace=T))

然后以下都产生相同的东西:

to.delete  <- mydata$item %in% c(111,114,222,319)             # two steps
scrubbed.1 <- mydata[!to.delete,]

scrubbed.2 <- mydata[!(mydata$item %in% c(111,114,222,319)),] # same, one step

# @MatthewLundberg's approach (he left out a comma before the right bracket...]
scrubbed.3 <- droplevels(mydata[!(mydata$item %in% c(111,114,222,319)),])

identical(scrubbed.1,scrubbed.2)
#  [1] TRUE
identical(scrubbed.1,scrubbed.3)
#  [1] TRUE

您的第一种方法失败了,因为您正在与df$item字符串“111、114、222、319”进行比较。没有一个项目与该字符串匹配,因此没有删除。

于 2013-12-15T18:06:44.053 回答
0

我怀疑你想要这个:

Deleted <- droplevels(mydata[!(mydata$Item %in% c(111, 114, 222, 319) )])
于 2013-12-15T00:08:34.293 回答