- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设有一个动物园中动物事件多年来的每日时间序列。一个非常大的数据集的子集可能如下所示:
library(data.table)
type <- c(rep('giraffe',90),rep('monkey',90),rep('anteater',90))
status <- as.factor(c(rep('display',31),rep('caged',28),rep('display',31),
rep('caged',25), rep('display',35),rep('caged',30),rep('caged',10),
rep('display',10),rep('caged',10),rep('display',60)))
date <- rep(seq.Date( as.Date("2001-01-01"), as.Date("2001-03-31"), "day" ),3)
其中“类型”是动物类型,“状态”是动物当天正在做什么的指标,例如,被关在笼子里或展示。
animals <- data.table(type,status,date);animals
type status date
1: giraffe display 2001-01-01
2: giraffe display 2001-01-02
3: giraffe display 2001-01-03
4: giraffe display 2001-01-04
5: giraffe display 2001-01-05
---
266: anteater display 2001-03-27
267: anteater display 2001-03-28
268: anteater display 2001-03-29
269: anteater display 2001-03-30
270: anteater display 2001-03-31
假设我们希望将其汇总为一个每月系列,其中列出了动物及其整个月的状态信息。在新系列中,“状态”反射(reflect)了动物在月初的状态。 "fullmonth"是一个二元变量 (1=TRUE,0=FALSE),表示该状态是否持续整个月,而 "anydisp"是一个二元变量 (1=TRUE, 0=FALSE),表示动物是否在在一个月内的任何时间显示(>= 1 天)。所以,因为长颈鹿在 1 月和 3 月的整几个月里都在展出,但在 2 月被关在笼子里,所以它会被相应地标记。
date <- rep(seq.Date( as.Date("2001-01-01"), as.Date("2001-03-31"),"month"),3)
type <- c(rep('giraffe',3),rep('monkey',3),rep('anteater',3))
status <- as.factor(c('display','caged','display','caged','display','caged',
'caged','display','display'))
fullmonth <- c(1,1,1,0,1,0,0,1,1)
anydisp <- c(1,0,1,1,1,1,1,1,1)
animals2 <- data.table(date,type,status,fullmonth,anydisp);animals2
date type status fullmonth anydisp
2001-01-01 giraffe display 1 1
2001-02-01 giraffe caged 1 0
2001-03-01 giraffe display 1 1
2001-01-01 monkey caged 0 1
2001-02-01 monkey display 1 1
2001-03-01 monkey caged 0 1
2001-01-01 anteater caged 0 1
2001-02-01 anteater display 1 1
2001-03-01 anteater display 1 1
我以为
zoo
可能是要走的路,但在玩弄之后我发现它不能很好地处理非数字值,即使我为定性组件(状态)分配了任意值,也不清楚它将如何解决问题。
##aggregate function with zoo?
library(zoo)
animals$activity <- as.numeric(ifelse(status=='display',1,0))
animals2 <- subset(animals, select=c(date,activity))
datas <- zoo(animals2)
monthlyzoo <- aggregate(datas,as.yearmon,sum)
Error in Summary.factor(1L, na.rm = FALSE) :
sum not meaningful for factors
有人知道使用
sqldf
的解决方案吗?或
data.table
?
animals2 <- animals[30:270,];head(animals2)
setkey(animals2, "type", "date")
oo <- animals2[, list(date=date[1], status = status[1],
fullmonth = 1 * all(status == status[1]),
anydisplay = any(status == "display") * 1 ),
by = list(month(date), type)][, month := NULL]
oo
type date status fullmonth anydisplay
1: anteater 2001-01-30 caged 0 1
2: anteater 2001-02-01 display 1 1
3: anteater 2001-03-01 display 1 1
4: giraffe 2001-01-01 display 1 1
5: giraffe 2001-02-01 caged 1 0
6: giraffe 2001-03-01 display 1 1
7: monkey 2001-01-01 caged 0 1
8: monkey 2001-02-01 display 1 1
9: monkey 2001-03-01 display 0 1
sqldf("select
min(date) date,
type,
status,
max(status) = min(status) fullmonth,
sum(status = 'display') > 0 anydisp
from animals2
group by type, strftime('%Y %m', date * 3600 * 24, 'unixepoch')
order by type, date")
date type status fullmonth anydisp
1 2001-01-30 anteater caged 0 1
2 2001-02-01 anteater display 1 1
3 2001-03-01 anteater display 1 1
4 2001-01-01 giraffe display 1 1
5 2001-02-01 giraffe caged 1 0
6 2001-03-01 giraffe display 1 1
7 2001-01-01 monkey caged 0 1
8 2001-02-01 monkey display 1 1
9 2001-03-01 monkey caged 0 1
这可以通过后处理任何解决方案来修改日期来适应:
dateswitch <- paste(year(animals2$date),month(animals2$date),1,sep='/')
dateswitch <- as.Date(dateswitch, "%Y/%m/%d")
animals2$date <- as.Date(dateswitch)
最佳答案
像这样的东西?
setkey(animals, "type", "date")
oo <- animals[, list(date=date[1], status = status[1],
fullmonth = 1 * all(status == status[1]),
anydisplay = any(status == "display") * 1),
by = list(month(date), type)][, month := NULL]
# type date status fullmonth anydisplay
# 1: anteater 2001-01-01 caged 0 1
# 2: anteater 2001-02-01 display 1 1
# 3: anteater 2001-03-01 display 1 1
# 4: giraffe 2001-01-01 display 1 1
# 5: giraffe 2001-02-01 caged 1 0
# 6: giraffe 2001-03-01 display 1 1
# 7: monkey 2001-01-01 caged 0 1
# 8: monkey 2001-02-01 display 1 1
# 9: monkey 2001-03-01 display 0 1
关于r - 动物园里的动物 : can we aggregate a daily time series of factors and flag activity by ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16504750/
如果我调用会发生什么变化 schedule->call(function() { .. do something ... })->daily() 如果我打电话 schedule->job(... my
Google Play 控制台中有一个名为“安装事件”(每日安装事件)的新指标。我只是将这些指标与经典的“用户安装量”进行了比较(我有法语版的控制台,我认为控制台上的英文翻译是每日“每个用户的安装量”
题目地址:https://leetcode.com/problems/daily-temperatures/description/ 题目描述 Given a list of daily temp
这个问题在这里已经有了答案: "TypeError: string indices must be integers" when getting data of a stock from Yahoo
嘿嘿,我知道如何在 SharedPreferences 中保存变量和其他数据,但我想知道如何每天递减一个变量。 这个 var (int) 已经在共享首选项中,并且我们每天递减 -1。 例如,我知道用户
我需要让我的 Java 程序每天在 linux 机器上运行一次。所以我创建了一个只有一行的简单文件: java -jar /opt/location/my_jar.jar 并将它放在 etc/cron
我在 cron.daily 中有几个 cron 作业,它们应该每天执行。我知道这些任务已执行,因为我可以看到最终结果。例如:我正在备份 MySQL 数据库,我可以看到备份文件。但是,我找不到这方面的日
我的 CentOS 7.4 安装了 logrotate 3.8.6。我在 /etc/logrotate.d/ 下有一个自定义 logrotate 文件,用于轮换安装在同一台机器上的 Tomcat(例如
我一直在摆弄cron。如果您安排一个脚本每天运行,而您的计算机在 acron 安排它时关闭,如果您在当天晚些时候打开您的计算机,它会运行吗? 最佳答案 cron.daily 计划每天在特定时间运行一次
我们目前正在为本地报纸准备 iPhone 应用程序。几周后,该报将在其网站上实现付费内容和免费内容。计划将有多种方式购买此内容: 单篇文章 每日订阅 每月订阅 按年订阅 还应允许注册用户访问 iPho
我有一个脚本可以每天随时运行。所以/etc/cron.daily似乎是一个简单的解决方案。 但是现在我遇到了问题,cronjob 不会运行该脚本。似乎 cronjob 不会运行任何日常工作。 所以我试
有谁知道如何获取Bing“每日手机壁纸”地址。如果您通过 iPhone 访问 bing.com,您将看到漂亮的壁纸。Bing 每天都会更改,并提供纵向和横向两种分辨率格式。 比如今天的Bing手机壁纸
我正在尝试创建一个循环异步任务来调用带有 JobScheduler 和 JobService 的 Web 服务。但我的想法是尝试每天执行一次此任务,并且始终在同一时间执行。甚至可以让用户更新任务启动日
我在数据库中有一个表statistics: CREATE TABLE `statistics` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `ti
当我在 Android Developer Console 中查看我的“每日设备安装量”时,这些数字与 Google 支付的费用没有任何相似之处。 任何人都可以阐明这一点吗?例如,根据 Google
我正在尝试实现本地通知 这是我设置的 // Current date NSDate *date = [NSDate date]; // Add one minute to th
我在 Spring 应用程序中通过 Lombok 和 @Slf4j 注释使用 Logback,因此我的日志记录配置在 logback-spring.xml 文件中。一般日志记录工作正常,但问题是我正在
在this tutorial在 Daily inspirations 的部分,他说: $quote = array( 1 => "Quote 1", 2 => "Quote 2", 3 => "Quo
我有使用 Net::Finger 的 perl 程序并已从 cron.daily 成功运行在 Fedora 11 中。 我刚刚将服务器升级到 Fedora 18,这些相同的 perl 程序不再从 cr
我以每月 25 美元的价格升级到“Flame”订阅,因为它支持 Daily private backups . 日常备份应该上传到 Google Cloud Storage 或 Amazon S3。
我是一名优秀的程序员,十分优秀!