标签: missing-data

内部NA时间序列,动物园,R

我在R中有一个动物园对象,它有每日数据,并且错过了周末.当我尝试ar()在对象上运行某些函数时(例如)我得到错误:

mkt.ar <- ar(zoo_object)
Error in na.fail.default(as.ts(x)) : missing values in object
Run Code Online (Sandbox Code Playgroud)

如果我做:

mkt.ar <- ar(zoo_object, na.action=na.omit)
Error in na.omit.ts(as.ts(x)) : time series contains internal NAs
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为当动物园试图将事物转换为ts时,周末本来就缺失了.除了将事物转换为使用coredata(zoo_object)和运行的向量之外ar(),有没有办法告诉R跳过丢失的数据?

谢谢

r time-series missing-data zoo

5
推荐指数
1
解决办法
2913
查看次数

如何在R中的表中创建缺失值?

我有40对鸟,每对男性和女性在一对得分的颜色.颜色分数是一个分类变量,其值范围为1到9.我想创建一个表格,其中包含每个组合的数量(1/1,1/2,1/3,...,9/7,9/8,9/9).我的问题是,当我尝试创建表时,我的数据中存在一些组合(在这些情况下,我希望零值为缺失值).以下是数据和示例代码.我很确定答案在于使用'expand.grid()'命令,例如看到这篇文章,但我不确定如何实现它.有什么建议?

## Dataset pairs of males and females and their colour classes
Pair_Colours <- structure(list(Male = c(7, 6, 4, 6, 8, 8, 5, 6, 6, 8, 6, 6, 5, 
7, 9, 5, 8, 7, 5, 5, 4, 6, 7, 7, 3, 6, 5, 4, 7, 4, 3, 9, 4, 4, 
4, 4, 9, 6, 6, 6), Female = c(9, 8, 8, 9, 3, 6, 8, 5, 8, 9, 7, 
3, 6, 5, 8, 9, 7, 3, 6, 4, …
Run Code Online (Sandbox Code Playgroud)

r frequency missing-data

5
推荐指数
1
解决办法
1339
查看次数

如何检测泛型函数参数中缺少的点 - 点

假设我有一个类似的功能

z <- function(x, ...) {
  print(x)
}
Run Code Online (Sandbox Code Playgroud)

如果...缺少,该功能应该做一件事; 如果...指定,则该函数应该对其执行其他操作.在这种情况下,我可以missing(...)用来检测是否..缺失.但是我没有找到一种优雅的方法来检测泛型方法,比如[.Obj(x, ...)丢失...仍然是一个pairlist(<emptyname>),missing(...) = FALSE即使我没有给出值.

以下是一些实验:

z <- function(x, ...) {
  cat(missing(...))
}

Obj <- function() {
  env <- environment()
  class(env) <- "Obj"
  env
}

`[.Obj` <- function(x,...) {
  cat(missing(...),"\n")
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码评估以下内容:

> z()
TRUE
> z(a=1)
FALSE
> Obj()[]
FALSE 
NULL
> Obj()[a=1]
FALSE 
NULL
Run Code Online (Sandbox Code Playgroud)

但是,在Obj()[]RStudio的调试模式下,它就像

Browse[1]> list(...)
Error: argument is missing, with …
Run Code Online (Sandbox Code Playgroud)

r missing-data

5
推荐指数
1
解决办法
284
查看次数

R data.table将NA替换为数字列的均值,将最常值替换为名义值

我有以下几点 data.table

x = structure(list(id1 = c("a", "a", "a", "b", "b", NA), id2 = c(2, 3, NA,3, 4, 5)), .Names = c("id1", "id2"), row.names = c(NA, -6L), class = c("data.table", "data.frame"), .internal.selfref = <pointer: 0x1fe4a78>)
Run Code Online (Sandbox Code Playgroud)

我正在尝试NA用不同的策略替换每一列.对于数字列我想用替换它mean和factor或character我想用最频繁的值来代替它列.我尝试了以下但它什么也没做.

for (j in 1:ncol(x)){
  if(is.numeric(unlist(x[,j,with=FALSE]))){
     m = mean(unlist(x[,j,with=FALSE]))
     set(x,which(is.na(x[[j]])),j,m)
   }else{
     m = sort(table(x),decreasing=TRUE)[[1]]
     set(x,which(is.na(x[[j]])),j,m)
}
Run Code Online (Sandbox Code Playgroud)

r missing-data lapply data.table

5
推荐指数
1
解决办法
1758
查看次数

R的randomForest包中缺少值错误

我正在使用randomForest包来使用标准流程对二进制结果变量进行分类.我首先必须强制更改所有变量以确保它们是数字,然后用于na.roughfix处理缺失值:

data <- read.csv("data.csv")
data <- lapply(data, as.numeric)
data <- na.roughfix(data) 
Run Code Online (Sandbox Code Playgroud)

然后我运行模型:

model <- randomForest(as.factor(outcome) ~ V1 + V2...+ VN, 
         data=data, 
         importance=TRUE,
         ntree=500)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

na.fail.default中的错误(list(as.factor(outcome)= c(2L,2L,1L,:对象中缺少值)

na.roughfix估算应该已经解决了这个问题(我之前已经开始工作,这里的研究表明它应该工作),对吗?有什么建议?

r machine-learning missing-data random-forest

5
推荐指数
1
解决办法
1069
查看次数

data.table将NA替换为多列的均值和id

如果我有以下data.table:

dat <- data.table("id"=c(1,1,1,1,2,2,2,2), "var1"=c(NA,1,2,2,1,1,2,2),
              "var2"=c(4,4,4,4,5,5,NA,4), "var3"=c(4,4,4,NA,5,5,5,4))
   id var1 var2 var3
1:  1   NA    4    4
2:  1    1    4    4
3:  1    2    4    4
4:  1    2    4   NA
5:  2    1    5    5
6:  2    1    5    5
7:  2    2   NA    5
8:  2    2    4    4
Run Code Online (Sandbox Code Playgroud)

如何用id中每列的平均值替换缺失值?在我的实际数据中,我有许多变量,对于我想要替换的变量,所以如何以一般方式完成,例如它不会替换为var3而只替换为var1和var2?:

tomean=c("var1", "var2")
Run Code Online (Sandbox Code Playgroud)

我试过这样的东西,但我还没有找到解决方案:

dat[, (tomean) := mean(tomean, na.rm=TRUE), by=id, .SDcols = tomean]
Run Code Online (Sandbox Code Playgroud)

r missing-data data.table

5
推荐指数
1
解决办法
2053
查看次数

熊猫dataframe fillna()不起作用?

我有一个数据集,在其中执行主成分分析(PCA)。ValueError当我尝试转换数据时会收到一条消息。以下是一些代码:

import pandas as pd
import numpy as np
import matplotlib as mpl
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA as sklearnPCA

data = pd.read_csv('test.csv',header=0)
X = data.ix[:,0:1000].values   # values of 1000 predictor variables
Y = data.ix[:,1000].values     # values of binary outcome variable
sklearn_pca = sklearnPCA(n_components=2)
X_std = StandardScaler().fit_transform(X)
Run Code Online (Sandbox Code Playgroud)

我在这里收到以下错误消息:

import pandas as pd
import numpy as np
import matplotlib as mpl
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA as sklearnPCA

data = pd.read_csv('test.csv',header=0)
X = …
Run Code Online (Sandbox Code Playgroud)

python missing-data dataframe pandas

5
推荐指数
2
解决办法
1万
查看次数

将随机缺失值的确切比例添加到data.frame

我想随机添加NA到R中的data.frame.到目前为止,我已经研究了这些问题:

R:按比例随机将NAs插入数据帧

如何将随机NAs 添加到数据框中

将随机缺失值添加到完整数据框中(在R中)

这里提供了许多解决方案,但我找不到符合这5个条件的解决方案:

  • 添加非常随机的NA,而不是按行或按列添加相同的量
  • 处理data.frame(数字,字符,因子,逻辑,ts ..)中可能遇到的每个变量类,因此输出必须与输入data.frame或matrix具有相同的格式.
  • 保证输出中NA 的精确数量或比例[注意](许多解决方案导致NA的数量较少,因为在同一位置生成了多个NA)
  • 计算是否对大数据集有效.
  • 在输入中独立于已存在的NA添加NA的比例/数量.

有人有想法吗?我已经尝试编写一个函数来执行此操作(在第一个链接的答案中)但它不符合N°3和4点.谢谢.

[注意]确切的比例,当然是+/- 1NA.

random r missing-data na

5
推荐指数
1
解决办法
862
查看次数

差异矩阵中缺少值的多维缩放

我有一个相异矩阵,我想使用sklearn.manifold.MDS函数执行多维缩放(MDS)。此矩阵中某些元素之间的差异没有意义,因此我想知道是否有一种方法可以在稀疏矩阵或缺少值的矩阵上运行MDS?根据这个问题,与0的相异性被认为是缺失值,但是我在官方文档中找不到此声明。值0的差异是否被解释为彼此非常接近的点?

任何有关基于稀疏相异矩阵获取我的高维数据集的低维表示的建议都将受到欢迎。谢谢!

python sparse-matrix missing-data multi-dimensional-scaling scikit-learn

5
推荐指数
1
解决办法
842
查看次数

在熊猫布尔比较中保持NaN值

我在熊猫数据框中有两个布尔列A和B,每个列都有缺失的数据(由NaN表示)。我想要在两列上执行AND操作,但是如果原始列中的任何一个为NaN,我希望生成的布尔列为NaN。我有下表:

    A      B
0   True   True    
1   True   False   
2   False  True   
3   True   NaN    
4   NaN    NaN
5   NaN    False
Run Code Online (Sandbox Code Playgroud)

现在,当df.A & df.B我想要时:

0    True
1    False
2    False
3    NaN
4    NaN
5    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

但是我得到了:

0    True
1    False
2    False
3    True
4    True
5    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

此行为np.bool(np.nan) & np.bool(False)与其排列是一致的,但是我真正想要的是一列,该字段告诉我确定每一行对于两者而言是否为True,或者对于某些情况而言一定不能为True。如果我都知道它为True,则结果应该为True,如果我知道至少一个结果为False,则结果应该为False,否则我需要NaN来显示数据丢失。

有没有办法做到这一点?

python boolean missing-data pandas

5
推荐指数
2
解决办法
2462
查看次数