连续时间计数数据是带外的 -

时间:2015-11-27 06:34:53

标签: r excel tableau

我有频率数据(间隔-1分钟)。我想计算数据带外的连续时间(band-49到51)。我不想要总时间。我需要连续的时间,它可能会在不同的时间发生。假设在下午6点的一天频率样本是48.3 48.2,48.7,49.1。结果应该是3分钟。使用R或Excel,我该怎么办?

3 个答案:

答案 0 :(得分:1)

在Tableau中,您可以使用沿时间维度运行的表计算。

例如,将名为 in_band 的计算字段定义为

[Frequency] >= 49 and [Frequency] <= 51

然后将名为 current_minutes_out_of_band 的计算字段设为

if attr(in_band) then 0 else previous_value(0) + 1 end

如果你将MINUTE(TIME)放在Rows架子上并使其离散,你可以将current_minutes_out_of_band放在Text架子上,并观察计数器在带外累积分钟数。

只要频率返回到所需频段,此表达式就会将计数器重置为零。如果你想要一个运行总计,那就更容易了 - 只需定义一个字段,如果in_band则返回1,否则返回0。将该字段放在架子上,右键单击它并选择快速表Calc运行总计

这假设每分钟有一个数据行没有间隙。可以概括为避免这些假设。

表格计算是在客户端/服务器划分的客户端计算的,因此需要在线路上获取每一行的时间和频率。对于大型数据集,在数据源上进行计算通常更有效,并仅返回聚合结果。 SQL窗口函数或Oracle分析函数可以做到这一点。

表格计算还取决于正确设置寻址和分区。有关详细信息,请参阅表格计划上的文档。

答案 1 :(得分:0)

在Excel中,您可以使用数组公式来搜索范围内的下一个频率: -

=MATCH(1,(B2:B$10>=49)*(B2:B$10<=51),0)-1

如果您的频率从B2开始。

必须使用 Ctrl Shift 输入

输入C2

这是一个修改版本,它允许最后一个频率超出范围的情况,假设频率值之间没有空白,最后一个或多个空白:

=MATCH(1,(B2:B$10>=49)*(B2:B$10<=51)+(B2:B$10=""),0)-1

enter image description here

答案 2 :(得分:0)

这可以使用times <- paste0("18:0", 0:8) freq <- c(48.3, 48.2, 48.7, 49.1, 50, 51.1, 51.2, 52, 50) 函数在R中优雅地完成,该函数计算数据的行程编码。考虑一些示例输入:

rle

我们可以使用with(rle(freq < 49 | freq > 51), lengths[values]) # [1] 3 3 确定带外时间的长度(每段3分钟的2段):

with(rle(freq < 49 | freq > 51), times[cumsum(lengths)][values])
# [1] "18:02" "18:07"

我们还可以确定这些运行结束的时间:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{   
    UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    NSDictionary *notificationPayload = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
    NSString *productId = [notificationPayload objectForKey:@"p"];

    if (notification) {
    //this will only trigger when the app has been opend from a remote PUSH notification!!

        [self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
        _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        [_window makeKeyAndVisible];

        _customRootViewController = [EZPUSHEXAMPLENavigationController new];
        [_customRootViewController setNavigationBarHidden:true];
        [self.window setRootViewController:_customRootViewController];

        if ([PFUser currentUser] == nil) {
            [self registerForNotifications:application launchOptions:launchOptions];
            EZPUSHEXAMPLEPreSplashViewController * splashScreen = [[EZPUSHEXAMPLEPreSplashViewController alloc] init];
            [_customRootViewController setViewControllers:@[splashScreen] animated:TRUE];
        } else {
            EZPUSHEXAMPLEPreSplashViewController * splashScreen = [[EZPUSHEXAMPLEPreSplashViewController alloc] init];
            EZPUSHEXAMPLECustomTabBarController * mvc = [[EZPUSHEXAMPLECustomTabBarController alloc] init];
            [mvc.navigationController.navigationBar setTranslucent:TRUE];
            [mvc.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];
            [(EZPUSHEXAMPLEFeedViewController*)[[[[mvc viewControllers] objectAtIndex:0] viewControllers] objectAtIndex:0] setProductId:productId];
            [_customRootViewController setViewControllers:@[splashScreen, mvc] animated:TRUE];
     }
        return YES;
    } else {
        _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        [_window makeKeyAndVisible];
        _customRootViewController = [EZPUSHEXAMPLENavigationController new];
        [_customRootViewController setNavigationBarHidden:true];
        [self.window setRootViewController:_customRootViewController];
        if ([PFUser currentUser] == nil) {
            [self registerForNotifications:application launchOptions:launchOptions];
            EZPUSHEXAMPLEPreSplashViewController * splashScreen = [[EZPUSHEXAMPLEPreSplashViewController alloc] init];
            [_customRootViewController setViewControllers:@[splashScreen] animated:TRUE];
        } else {
            EZPUSHEXAMPLEPreSplashViewController * splashScreen = [[EZPUSHEXAMPLEPreSplashViewController alloc] init];
            EZPUSHEXAMPLECustomTabBarController * mvc = [[EZPUSHEXAMPLECustomTabBarController alloc] init];
            [mvc.navigationController.navigationBar setTranslucent:TRUE];
            [mvc.navigationController.navigationBar setBackgroundColor:[UIColor clearColor]];
            [_customRootViewController setViewControllers:@[splashScreen, mvc] animated:TRUE];
        }
        return YES;
    }
}