R语言将数据框拆分为图形的相关格式
我有一个包含12000行以下内容的数据集(显然,IP地址已更改): 所以,我对此做了一些事情,比如“获取所有ip地址,它们有超过100行的真与假组合”,等等 我正在尝试将上面的内容转换成一种易于使用的格式,在这种格式中,我可以按计数对“好的”bool进行排序,并将其分组为1小时的间隔。比如:R语言将数据框拆分为图形的相关格式,r,graph,R,Graph,我有一个包含12000行以下内容的数据集(显然,IP地址已更改): 所以,我对此做了一些事情,比如“获取所有ip地址,它们有超过100行的真与假组合”,等等 我正在尝试将上面的内容转换成一种易于使用的格式,在这种格式中,我可以按计数对“好的”bool进行排序,并将其分组为1小时的间隔。比如: date TRUE FALSE 2016-10-31 00:00:00 342 1010 2016-10-31 01:00:00 544 890 我尝试了cut.PO
date TRUE FALSE
2016-10-31 00:00:00 342 1010
2016-10-31 01:00:00 544 890
我尝试了cut.POSIXt(data$date,breaks=“hour”)
,但这并没有保留bool状态,也给了我一个不可标记的对象
我尝试了lappy(split(投票,cut(投票$date,“hour”)),function(x)summary(x[2]))
,这是我在网上找到的,正好适合我的用例,但是
1) 除了割裂之外,我不明白发生了什么
2) 它给了我一个以字符为单位的日期列表,后面是一团字符,我无法绘制
我应该在这里采取什么转变和步骤?我试着加总,但我总是失去正确/错误的区分
我们的目标是制作一个每小时间隔有两个彩色条的绘图,蓝色表示该小时间隔内注册的total true,红色表示该小时间隔内注册的total false。以下是一种基于示例数据使用
dplyr
的方法,假设df$Date
是POSIXct
类型
library(dplyr)
library(tidyr)
df %>%
group_by(date = format(Date, "%Y-%m-%d"),
hour = format(Date, "%H"),
good = as.character(good)) %>%
summarise(count = n()) %>%
spread(key = good, value = count)
# date hour `FALSE` `TRUE`
#* <chr> <chr> <int> <int>
#1 2016-10-31 00 3 7
库(dplyr)
图书馆(tidyr)
df%>%
分组依据(日期=格式(日期,“%Y-%m-%d”),
小时=格式(日期,“%H”),
好=作为.字符(好))%>%
汇总(计数=n())%>%
排列(键=良好,值=计数)
#日期时间'FALSE``真`
#*
#1 2016-10-31 00 3 7
如果您打算打印,您可能不需要执行
spread()
的最后一步,例如可以使用之前的步骤将其插入ggplot2
。下面是一个包含数据的解决方案。table
library(data.table)
dt <- data.table(df)
请给出一个工作示例,以便我们可以测试它。您可以使用dput()@timat,我很乐意,但我不能,因为我实际上使用的是敏感的生产数据,无法复制这些数据。不过我得到了答案。非常感谢您的关注。df%>%这个%>%符号是什么?@JapanRob他们叫它pipe operator,看这里@timat谢谢!
library(data.table)
dt <- data.table(df)
dt$date<- as.POSIXct(dt$date,format="%d/%m/%Y %H:%M", tz = "GMT")
dt$break_hour <- cut(dt$date, breaks="hour")
dt <- dt[,list(good = sum(good), bad = sum(!good)), by=break_hour ]