У меня есть data.table
, который я хочу обобщить. Похоже, что:R: агрегат в переменной data.table и повторного использования
> DF
new_src action
1: cdn.adnxs.com 1
2: cdn.adnxs.com 1
3: cdn.adnxs.com 1
4: cdn.adnxs.com 3
5: s1.2mdn.net 1
6: cdn.adnxs.com 3
7: cdn.adnxs.com 3
8: cdn.adnxs.com 3
9: cdn.adnxs.com 3
10: cdn.adnxs.com 3
Я хочу объединить по new_src
, найти наибольшее возникновение по action
, вычислить частоту, распечатать эту action
, печать всего. Я могу сделать это в ddply
с использованием table
и повторно использовать переменную в пределах ddply
, поэтому мне не нужно запускать table
несколько раз. Мне нужно сделать это в data.table
, но я не могу повторно использовать результаты table
, мне нужно запустить table
дважды.
Пример. Это работает:
DF = structure(list(new_src = c("cdn.adnxs.com", "cdn.adnxs.com",
"cdn.adnxs.com", "cdn.adnxs.com", "s1.2mdn.net", "cdn.adnxs.com",
"cdn.adnxs.com", "cdn.adnxs.com", "cdn.adnxs.com", "cdn.adnxs.com"), action = c("1", "1", "1", "3", "1", "3", "3", "3", "3", "3")), .Names = c("new_src", "action"), class = c("data.table", "data.frame"), row.names = c(NA, -10L))
dt = DF[1:10,by=list(new_src),list(tb = sort(table(action),decreasing=T)[1], nm = names(sort(table(action),decreasing=T)[1]),tot = .N)]
View(dt)
ddpl = ddply(DF,.(new_src),summarize,tb = sort(table(action),decreasing=T)[1], nm = names(tb), tot = length(new_src))
View(ddpl)
Это не так.
dt = DF[1:10,by=list(new_src),list(tb = sort(table(action),decreasing=T)[1], nm = names(tb),tot = .N)]
Возможно ли с data.table
? Благодаря
Фантастический! Большое спасибо. Эта часть моего кода работает намного быстрее, потому что я не запускаю 'table' дважды! –