根据其他两个列值对行进行计数,并在循环中通过R

时间:2020-02-28 20:44:28

标签: r dataframe

共有三列:网站,日期(“%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分组的两个变量。我该如何实现?非常感谢!

2 个答案:

答案 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)