我有一组不同采样间隔的动物位置。我想要做的是对采样间隔与某个标准匹配的序列进行分组和标记(例如,低于某个值)。 这是this question的修订版,标记为this one的副本。这个修订问题的不同之处在于,所有与标准不匹配的值都应该被忽略,而不是标记。
让我用一些虚拟数据来说明:
start <- Sys.time()
timediff <- c(rep(5,3),rep(20,3),rep(5,2))
timediff <- cumsum(timediff)
# Set up a dataframe with a couple of time values
df <- data.frame(TimeDate = start + timediff)
# For understanding purposes, I will note the time differences in a separate column
df$TimeDiff <- c(diff(df$TimeDate),NA)
使用@Josh O'Brien的answer,可以定义一个对符合特定条件的值进行分组的函数。
number.groups <- function(input){
input[is.na(input)] <- FALSE # to eliminate NA
return(head(cumsum(c(TRUE,!input)),-1))
}
# Define the criteria and apply the function
df$Group <- number.groups(df$TimeDiff <= 5)
# output
TimeDate TimeDiff Group
1 2016-03-16 15:41:51 5 1
2 2016-03-16 15:41:56 5 1
3 2016-03-16 15:42:01 20 1
4 2016-03-16 15:42:21 20 2
5 2016-03-16 15:42:41 20 3
6 2016-03-16 15:43:01 5 4
7 2016-03-16 15:43:06 5 4
8 2016-03-16 15:43:11 NA 4
这里的问题是第4行和第5行被标记为单独的组,而不是被忽略。有没有办法确保不属于某个组的值不被分组(例如保持NA)?
答案 0 :(得分:1)
我想我找到了解决问题的方法。方法是将每个值与下一个值进行比较,并使用此信息来消除唯一值。然后,将剩余值重新命名为因子。
location ~ .php$ {
if (!-e $request_filename) { rewrite / /index.php last; }
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param MAGE_RUN_CODE default;
fastcgi_param MAGE_RUN_TYPE store;
include fastcgi_params; ## See /etc/nginx/fastcgi_params;
## Tweak fastcgi buffers, just in case.
fastcgi_buffer_size 128k;
fastcgi_buffers 256 4k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}