我正在寻找R中的一个命令,它等同于这个SQL语句。我希望这是一个非常简单的基本解决方案,不使用复杂的函数或dplyr类型的包。
Select count(*) as number_of_states
from myTable
where sCode = "CA"
因此,从本质上讲,我将计算与where条件匹配的行数。
我已经将一个csv文件作为数据frame.So导入到我的数据中,我已经尝试了这些方法,但都没有用。
nrow(mydata$sCode == "CA") ## ==>> returns NULL
sum(mydata[mydata$sCode == 'CA',], na.rm=T) ## ==>> gives Error in FUN(X[[1L]], ...) : only defined on a data frame with all numeric variables
sum(subset(mydata, sCode='CA', select=c(sCode)), na.rm=T) ## ==>> FUN(X[[1L]], ...) : only defined on a data frame with all numeric variables
sum(mydata$sCode == "CA", na.rm=T) ## ==>> returns count of all rows in the entire data set, which is not the correct result.
以及上述样本的一些变体。任何帮助都将不胜感激!谢谢。
发布于 2015-01-28 23:40:17
mydata$sCode == "CA"
将返回一个布尔数组,只要满足条件,就会返回一个TRUE
值。举例说明:
> mydata = data.frame(sCode = c("CA", "CA", "AC"))
> mydata$sCode == "CA"
[1] TRUE TRUE FALSE
有几种方法可以解决这个问题:
注释中建议的
sum(mydata$sCode == "CA")
,;由于vector.length(which(mydata$sCode == "CA"))
;中将TRUE
解释为1,而将FALSE
解释为0,因此应返回TRUE
值的个数。which()
函数返回满足条件的索引的向量,其长度是count的计数编辑以扩展#2中发生的事情:
> which(mydata$sCode == "CA")
[1] 1 2
which()
返回一个向量,标识满足条件的每一列(在本例中是数据帧的第1列和第2列)。此向量的length()
是出现的次数。
发布于 2015-01-28 23:37:15
sum
用于添加元素;nrow
用于计算矩形数组(通常是矩阵或data.frame)中的行数;length
用于计算向量中的元素数。您需要正确地应用这些函数。
让我们假设您的数据是一个名为"dat“的数据框。正确的解决方案:
nrow(dat[dat$sCode == "CA",])
length(dat$sCode[dat$sCode == "CA"])
sum(dat$sCode == "CA")
发布于 2015-01-28 23:30:47
mydata$sCode
是一个向量,这就是为什么nrow输出是NULL.mydata[mydata$sCode == 'CA',]
返回data.frame
,其中sCode == 'CA'
。sCode包含字符。这就是为什么sum
提供了你应该使用sCode=='CA'
而不是sCode='CA'
的error.subset(mydata, sCode='CA', select=c(sCode))
,。然后subset返回向量,其中sCode等于CA,所以您应该使用长度(子集(na.omit(Mydata),sCode='CA',select=c(SCode)
或者你可以试试这个:sum(na.omit(mydata$sCode) == "CA")
https://stackoverflow.com/questions/28195996
复制相似问题