我从R中的数据库中选择RODBC中的一些值,如
library(RODBC)
dbhandle <- odbcDriverConnect('driver={SQL Server};server=mydatabase, ...')
res <- sqlQuery("select id, class, param1, param2 from table1 ..."
对于数据分析,我需要选择数据的子集。我得到了class
列,它是一个varchar,并定义了一些子类,如set1
或set2
。
例如,我需要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
过滤后,我将数据作为长列表而不是矩阵。有什么问题?
答案 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 值定义要返回的行。