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