共有三列:网站,日期(“%Y%m”),点击跟踪(T / F)。我想添加一个变量,描述每个月的点击跟踪次数= T的网站数量/该月所有网站的数量。
我认为这些步骤将类似于:
aggregate(sum(df$click_tracking = TRUE), by=list(Category=df$Date), FUN = sum)
as.data.frame(table(Date))
然后以某种方式循环遍历Date并除以上面已经按Date分组的两个变量。我该如何实现?非常感谢!
答案 0 :(得分:2)
如果我们要创建一列,则按'日期'进行分组,并在sum
中获得{click_tracking'的mutate
(假设它是逻辑列-TRUE / FALSE)>
library(dplyr)
df %>%
group_by(Date) %>%
mutate(countTRUE = sum(click_tracking))
如果列为factor
,请用logical
转换为as.logical
df %>%
group_by(Date) %>%
mutate(countTRUE = sum(as.logical(click_tracking)))
如果要创建汇总输出
df %>%
group_by(Date) %>%
summarise(countTRUE = sum(click_tracking))
在OP的代码中,使用=
(赋值)代替了==
中的sum(df$click_tracking = TRUE)
,并且无需在逻辑列上进行比较
aggregate(cbind(click_tracking = as.logical(click_tracking)) ~ Date, FUN = sum)
答案 1 :(得分:1)
这将创建每月具有点击跟踪功能的网站(在所有网站中)。
aggregate(data=df, click_tracking ~ Date, mean)