如果符合条件type
,我想计算每x == 0
行的行数。在SQL
以下是数据的示例
type x
search 0
NULL 0
public 0
search 1
home 0
home 1
search 0
答案 0 :(得分:8)
我假设您希望在满足特定条件(当变量具有某个值时)时找到行数。
如果是这种情况,那么我想你有" x"作为列中表示的变量。 " X"可以采取多个值。假设您想要在x为0时查找数据中有多少行。这可以通过以下方式完成:
nrow(subset(data, x=="0")
'数据'是R
中数据集的对象名称修改强>
我现在看到您编辑的数据框。您可以使用它来解决您的问题:
table(data$type, data$x)
答案 1 :(得分:4)
您也可以使用sqldf包:
library(sqldf)
df <- data.frame(type=c('search','NULL','public','search','home','home','search'),x=c(0,0,0,1,0,1,0))
sqldf("SELECT type, COUNT(*) FROM df WHERE x=0 GROUP BY type")
得出以下结果:
type COUNT(*)
1 NULL 1
2 home 1
3 public 1
4 search 2
答案 2 :(得分:2)
鉴于数据框架,
df=data.frame(type=c('search','NULL','public','search','home','home','search'),x=c(0,0,0,1,0,1,0))
如果您想知道第1列中每个值中有多少在第2列中的值为零,那么您可以使用:
table(df)[,1]
只要你只与1和0一起工作就可以得到答案:
home NULL public search
1 1 1 2
答案 3 :(得分:2)
您也可以使用dplyr
包执行此操作:
library(dplyr)
df2 <- df %>% group_by(x,type) %>% tally()
给出:
x type n
1 0 home 1
2 0 NULL 1
3 0 public 1
4 0 search 2
5 1 home 1
6 1 search 1
答案 4 :(得分:1)
鉴于您的数据结构为数据框,以下代码的运行时间比上面给出的答案更好:
nrow(data[data$x=="0"])
您可以使用以下方式测试您的运行时间:
ptm <- proc.time()
nrow(subset(data, x == "0"))
proc.time() - ptm
ptm <- proc.time()
nrow(data[data$x=="0"]))
proc.time() - ptm
在我的情况下,运行时间快了大约15倍,行数为100万。