Есть три столбца: веб-сайт, дата ("% 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. Как мне этого добиться? Большое спасибо!

1
zhlee 28 Фев 2020 в 23:44

2 ответа

Лучший ответ

Это создаст долю сайтов с отслеживанием кликов (из всех сайтов) в месяц.

aggregate(data=df, click_tracking ~ Date, mean)
1
George Savva 28 Фев 2020 в 20:48

Если мы создаем столбец, то сгруппируем по дате и получим sum 'click_tracking' (при условии, что это логический столбец - ИСТИНА / ЛОЖЬ) iin mutate

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)
2
akrun 28 Фев 2020 в 21:30