来自RODBC的结果中的值的子集

时间:2014-03-17 11:47:26

标签: r dataframe subset

我从R中的数据库中选择RODBC中的一些值,如

library(RODBC)
dbhandle <- odbcDriverConnect('driver={SQL Server};server=mydatabase, ...')
res <- sqlQuery("select id, class, param1, param2 from table1 ..."

对于数据分析,我需要选择数据的子集。我得到了class列,它是一个varchar,并定义了一些子类,如set1set2

例如,我需要summary()两个集合,然后每个集合。我会说这是通过以下方式完成的:

summary(res) # works fine
summary(res[res["class"] == 'set1']) # does not work
summary(res[res["class"] == 'set2']) # does not work

因为我得到了这个:

Length     Class      Mode 
    10788 character character 

过滤后,我将数据作为长列表而不是矩阵。有什么问题?

2 个答案:

答案 0 :(得分:1)

zx8754 answer shows you what wrong in your code。完成它的另一种方法是使用subset函数:

summary(subset(res, class == 'set2'))

答案 1 :(得分:0)

试试这个:

summary(res[res[,"class"] == "set1",])

<强>更新

res[row,column] - genrally第一个值是行索引,第二个值是列索引,所以:

res[,"class"] - 选择&#34; class&#34;来自res。的专栏

res[,"class"] == "set1" - 比较&#34; class&#34;使用字符串&#34; set1&#34;的列值,这将给出 TRUE,FALSE 值。

res[res[,"class"] == "set1",] - TRUE,FALSE 值定义要返回的行。