我有一个包含多个列的数据集,但为了保持简短,这里是一个缩写形式(数据来自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]
原来,该列是一个因素,而不是数字,我不知道如何转换该单列
答案 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