2017-02-24 77 views
0

我正在使用Rrd软件包进行R,我正在导入rrd文件,并且希望删除所有具有NaN的记录。尝试删除NaN时出错

head(rra) 

       timestamp curr_proc_units entitled_cycles capped_cycles 
1480982460 2016-12-05 18:01:00    NaN    NaN   NaN 
1480982520 2016-12-05 18:02:00    NaN    NaN   NaN 
1480982580 2016-12-05 18:03:00    NaN    NaN   NaN 
1480982640 2016-12-05 18:04:00    NaN    NaN   NaN 
1480982700 2016-12-05 18:05:00    NaN    NaN   NaN 
1480982760 2016-12-05 18:06:00    NaN    NaN   NaN 
     uncapped_cycles 
1480982460    NaN 
1480982520    NaN 
1480982580    NaN 
1480982640    NaN 
1480982700    NaN 
1480982760    NaN 

头部都是NaN,但其余的都不是。

#!/usr/bin/env Rscript 

# libraries 
library(lubridate, quietly = TRUE) 
library(plyr, quietly = TRUE) 
library(dplyr, quietly = TRUE) 
library(chron, quietly = TRUE) 
library(ggplot2, quietly = TRUE) 
library(Rrd, quietly = TRUE) 
library(plyrmr, quietly = TRUE) 

rra = importRRD("/kathryn/rdc1vsip8/rdc1vsiphmc3/rdc1vpc1lpr56.rrm", "AVERAGE", 1480982400, 1486598400, 2) 

rra$timestamp <- as.POSIXct(as.numeric(rra$timestamp), origin = "1970-01-01") 

rra = rra[!is.nan(rra)]; 

我的错误是:错误is.nan(RRA):为类型“列表”

因此,如何将我的列表到的东西,我可以拿出NaN值不执行默认方法?

+0

我假设你想要将某些列传递给is.nan。如果有一列可以用来识别nan案例,那么你可以将is.nan(rra)改为is.nan(rra $ yourcolumn),但是你可能想要使用行索引,所以它应该看起来像' rra <!rra [!is.nan(rra $ yourcolumn),]'(注意逗号) – Dason

+0

这是除时间戳之外的所有列。这可能吗? –

+0

你可以像apply(rra [, - 1],1,function(x){any(is.nan(x))})来获取包含nan值的行的索引。 “-1”告诉它在将函数应用到每一行时排除第一列(它是时间戳)。 – Dason

回答

0

下面是您的数据集的可重复版本。

timestamps <- seq(Sys.time() - 3600, Sys.time(), by = "1 min") 
n <- length(timestamps) 
rra <- data.frame(
    timestamp = timestamps, 
    curr_proc_units = runif(n), 
    entitled_cycles = runif(n) 
) 
rra <- within(
    rra, 
    { 
    curr_proc_units[sample(n, 10)] <- NaN 
    entitled_cycles[sample(n, 10)] <- NaN 
    } 
) 

下面是使用dplyrfilter()功能的解决方案。

library(dplyr) 
rra %>% 
    filter(
    !is.nan(curr_proc_units), 
    !is.nan(entitled_cycles) 
) 
+0

非常感谢你的赞赏。 –

+0

@KathrynWithers如果您发现此回答有用,请点击分数旁边的向上箭头以投票给它。谢谢! –

+0

好的@RichieCotton,因为我有不到15分的成绩,我已经投票了,但并没有公开显示。 –

0

在@Dason回答超过rra <- rra[!is.nan(rra$yourcolumn), ]后,我指定了一列,它也读取其他列。感谢您的帮助。

相关问题