从R数据框中删除行

时间:2014-02-26 01:44:12

标签: r

我有一个包含多个列的数据集,但为了保持简短,这里是一个缩写形式(数据来自Divvy竞赛)

Trip ID       Tripduration     from_id      to_id
1               50               2            2
2               700              2            5
3               80               2            4

当我从.csv R导入数据时,将其转换为data.frame,这没关系。所以使用

full.set2<-sapply(full.set, function(x) 
                            if(is.factor(x)){
                                             as.numeric(x)
                                             }else
                                             {
                                             x
                                             })

我能够将整个事物转换为“大型矩阵”(根据RStudio)。所以现在我试图清除符合2个标准的值:
1)Tripduration&lt; = 90
&安培;&安培;
2)from_id == to_id

当我这样做时

full.set2t<-full.set2[full.set2[,2]>=90]

它将full.set2t转换为一个非常大的向量而不是将其保留为矩阵(尽管它看起来可能正在删除正确的值,因为元素数量减少了)。

我还尝试了原始data.frame的子集,但我收到"> not meaningful for factors"

的错误

有什么想法吗?我已经四处寻找,似乎无法获得任何其他解决方案,而且我还没有找到工作

编辑:当我继续搜索时,我会把其他我试过的东西放在这里但是没有用:

x<-seq(1:90)
x<-as.numeric(x)
y<- full.set[! full.set$tripduration %in% x,]
## Does something, removes some data points but not all of the proper ones

找到解决方案!

 full.set$tripduration<-as.numeric(full.set$tripduration)
 full.set.test<-full.set[full.set$tripduration>90]

原来,该列是一个因素,而不是数字,我不知道如何转换该单列

1 个答案:

答案 0 :(得分:0)

问题在于这一行

full.set2t<-full.set2[full.set2[,2]>=90]

要对data.frame进行子集化,您需要使用[rows,columns],其中一个空白表示选择eveything。所以该行应

full.set2t<-full.set2[full.set2[,2]>=90,] # note the comma