R中的条件计数和分组依据

R中的条件计数和分组依据,r,count,conditional,aggregation,R,Count,Conditional,Aggregation,如果满足条件x==0,我想计算每个类型有多少行。有点像SQL中的GROUPBY 下面是一个数据示例 type x search 0 NULL 0 public 0 search 1 home 0 home 1 search 0 给定数据帧, df=data.frame(type=c('search','NULL','public','search','home','home','search'),x=c(0,0,0,1

如果满足条件
x==0
,我想计算每个
类型有多少行。有点像SQL中的GROUPBY

下面是一个数据示例

  type    x    
search    0 
NULL      0 
public    0
search    1
home      0
home      1
search    0
给定数据帧,
df=data.frame(type=c('search','NULL','public','search','home','home','search'),x=c(0,0,0,1,0,1,0))

如果您想知道第1列中每个值中有多少个在第2列中的值为零,则可以使用:
表(df)[,1]

只要您只使用1和0来获得答案:

  home   NULL public search 
     1      1      1      2

我假设您希望在满足特定条件(当变量具有某个值时)时查找行数

如果是这种情况,那么我假设“x”是一个列中表示的变量。“x”可以取多个值。假设您想在x为0时查找数据中有多少行。这可以通过以下方式实现:

nrow(subset(data, x=="0")
“data”是R中数据集的对象名称

编辑:

我现在看到您编辑的数据帧。你可以用这个来解决你的问题:

table(data$type, data$x)

您也可以使用
dplyr
软件包执行此操作:

library(dplyr)

df2 <- df %>% group_by(x,type) %>% tally()

您还可以使用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")

鉴于您的数据是以数据帧的形式构造的,以下代码的运行时间比上面给出的答案要好:

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

ptm您能用R代码包含一个数据示例吗?我很难理解您的要求,以及您的示例如何适合……在包含示例输入的同时,也包含所需的输出。请看,我想计算一个月内发生一个变量(任务)的频率(月份是1到12的变量),我将如何做到这一点?
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