查看每个类别中包含的天数?

时间:2018-02-04 15:41:54

标签: r

例如:

 head(software_data)
                               id   installation    software_v     
                                1   2011-12-01          v12
                                2   2011-12-01          v12
                                3   2011-12-01          v12 
                                4   2011-12-01          v12 
                                5   2011-12-02          v12 
                                6   2011-12-02          v12 

如何查找每个版本的活动天数?

一个不那么方便的方法是 执行:summary(software_data[software_data$software_v=="v12",])并在每次版本更改时都可以检查安装字段中的最小值和最大值。

2 个答案:

答案 0 :(得分:1)

为什么你不能简单地使用table函数?这是为了获得频率。我将为您的数据添加更多行:

df2=read.table(text="
           id   installation    software_v     
                                1   2011-12-01          v12
               2   2011-12-01          v12
               3   2011-12-01          v12 
               4   2011-12-01          v12 
               5   2011-12-02          v12 
               6   2011-12-02          v12
               7   2011-12-01          v13
               8   2011-12-01          v13
               9   2011-12-02          v13
               10  2011-12-02          v13",h=T,stringsAsFactors=F)





 colSums(with(df2,table(installation,software_v))>0)
v12 v13 
  2   2

我们发现v2在2天内处于活动状态,v13也有效2天

答案 1 :(得分:0)

以下是使用data.table包

的方法
# Install the package if you don't have it already
# install.packages("data.table")

# Load the package
library(data.table)

# Convert the data.frame to a data.table
software_data <- data.table(software_data)

days_active_by_v <- software_data[, .(
  min_date = min(installation), max_date = max(installation)
), by=.(software_v)][, ":=" (days_active = max_date - min_date)]

名为days_active的列为您提供版本

的最小和最大日期之间的天数差异