标签: missing-data

在数据帧中成对计算有效观测数(无NA)

假设我有这样的数据框:

Df <- data.frame(
    V1 = c(1,2,3,NA,5),
    V2 = c(1,2,NA,4,5),
    V3 = c(NA,2,NA,4,NA)
)
Run Code Online (Sandbox Code Playgroud)

现在我想计算两个变量的每个组合的有效观察数.为此,我写了一个函数sharedcount:

sharedcount <- function(x,...){
    nx <- names(x)
    alln <- combn(nx,2)
    out <- apply(alln,2,
      function(y)sum(complete.cases(x[y]))
    )
    data.frame(t(alln),out)
}
Run Code Online (Sandbox Code Playgroud)

这给出了输出:

> sharedcount(Df)
  X1 X2 out
1 V1 V2   3
2 V1 V3   1
3 V2 V3   2
Run Code Online (Sandbox Code Playgroud)

一切都很好,但功能本身在大数据帧上需要很长时间(600个变量和大约10000个观测值).我有一种感觉,我正在监督一种更简单的方法,特别是因为cor(...,use ='pairwise')运行起来要快得多,而且必须做类似的事情:

> require(rbenchmark)    
> benchmark(sharedcount(TestDf),cor(TestDf,use='pairwise'),
+     columns=c('test','elapsed','relative'),
+     replications=1
+ )
                           test elapsed relative
2 cor(TestDf, use = "pairwise")    0.25     1.0
1           sharedcount(TestDf)    1.90     7.6
Run Code Online (Sandbox Code Playgroud)

任何提示都表示赞赏.


注意:使用Vincent的技巧,我编写了一个返回相同数据框的函数.代码在我的答案中.

r missing-data dataframe

4
推荐指数
1
解决办法
9241
查看次数

计算运行中位数时缺少值?

我想平滑时间序列以避免虚假的抖动/错误.换句话说,我想做一些非常局部的稳健平滑.

我在动物园包装中遇到过rollmean和rollmedian但遇到了问题,因为我的矢量中有一个NA.然后,我在那里读到那些动物园功能使用runmed,其中存在问题.

== ==例子

median(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10),na.rm = TRUE)
runmed(c(1,1,1,2,2,2,7,NA,1,2,3,10,10,10),k=3)
Run Code Online (Sandbox Code Playgroud)

第一行返回2,但如果na.rm = TRUE未包括,则返回NA .第二行返回Error in runmed(c(1, 1, 1, 2, 2, 2, 7, NA, 1, 2, 3, 10, 10, 10), k = 3) : NA/NaN/Inf in foreign function call (arg 1).无法在该行中添加na.rm参数.

我如何处理NA以处理NA?顺便说一下,rollmean返回一个向量,该向量在NA之前是正确的,然后为每个值返回NA.

r missing-data

4
推荐指数
1
解决办法
1988
查看次数

组合不等长和非唯一值的向量

我想做以下事情:

组合成一个数据框,两个向量

  • 有不同的长度
  • 包含在另一个载体中也发现的序列
  • 包含在另一个载体中找不到的序列
  • 在其他向量中找不到的序列永远不会超过3个元素
  • 总是有相同的第一个元素

数据帧应显示对齐的两个向量中的相等序列,如果向量缺少另一个向量中存在的序列,则列中的NA.

例如:

vector 1    vector 2                     vector 1        vector 2
   1           1                            a               a
   2           2                            g               g
   3           3                            b               b
   4           1            or              h               a
   1           2                            a               g
   2           3                            g               b   
   5           4                            c               h
               5                                            c
Run Code Online (Sandbox Code Playgroud)

应该组合成数据框架

    1   1                                    a   a
    2   2                                    g   g
    3   3                                    b   b
    4   NA                                   h   NA
    1   1                  or                a   a 
    2   2                                    g   g
    NA  3                                    NA  b
    NA  4 …
Run Code Online (Sandbox Code Playgroud)

r sequence missing-data dataframe

4
推荐指数
1
解决办法
711
查看次数

在两个表的同一列上查找缺失值

假设SQL Server数据库中有两个表,两个表具有相同的模式.我想比较两个表上的单个列,并找到table1中缺少但在table2中的值.我在每个查询中得到一个不同的列表后,我已经在Excel中手动执行了这个操作,但如果我有一个查询,那么工作就会少一些.如何通过T-SQL找到丢失的记录?我想为以下数据类型执行此操作:datetime, nvarchar & bigint.

SELECT DISTINCT [dbo].[table1].[column1]
FROM [dbo].[table1]
ORDER BY [dbo].[table1].[column1] DESC

SELECT DISTINCT [dbo].[table2].[column1]
FROM [dbo].[table2]
ORDER BY [dbo].[table2].[column1] DESC
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server diff compare missing-data

4
推荐指数
1
解决办法
8575
查看次数

使用R为另一个数据框中的值插入缺失数据的值

所有,

我有一个问题,我担心这个问题可能太行了,但在其他地方寻找它会让我误入歧途.我可能没有使用正确的搜索字词.

我在R中有一个面板数据框(country-year),在给定变量上有一些缺失值.我试图用另一个数据框中另一个向量的值来估算它们.这是我想要做的一个例子.

假设Data是感兴趣的数据帧,其在我试图从另一个施主数据帧推断的给定矢量上具有缺失值.看起来像这样.

country    year      x
  70       1920    9.234
  70       1921    9.234
  70       1922    9.234
  70       1923    9.234
  70       1924    9.234
  80       1920      NA
  80       1921      NA
  80       1922      NA
  80       1923      NA
  80       1924      NA
  90       1920    7.562
  90       1921    7.562
  90       1922    7.562
  90       1923    7.562
  90       1924    7.562
Run Code Online (Sandbox Code Playgroud)

这将是Donor框架,其值为country == 80

country      x
  70       9.234
  80       1.523
  90       7.562
Run Code Online (Sandbox Code Playgroud)

我试图找到一种无缝的方法来自动化这个,超出了命令Data$x[Data$country == 80] <- 1.523.有很多国家失踪x.

值得澄清的是,简单merge是最简单的,但不一定适合我正在尝试做的事情.一些国家将 …

r data-manipulation missing-data

4
推荐指数
2
解决办法
5303
查看次数

'NaTType'对象没有属性'days'

我的数据集中有一个列,表示以ms为单位的日期,有时它的值是nan(实际上我的列是类型str,有时它的值是valus 'nan').我想在本专栏的几天内计算时代.问题在于,当做两个日期的差异时:

(pd.to_datetime('now') - pd.to_datetime(np.nan)).days
Run Code Online (Sandbox Code Playgroud)

如果一个被nan转换为NaT,并且差异是NaTType没有属性的类型days.

在我的情况下,我希望有nan结果.

我尝试过的其他方法:np.datetime64不能使用,因为它不能作为参数nan.我的数据无法转换为int自int没有nan.

missing-data pandas

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

大熊猫不能用滴管滴下NAN

我将pandas导入为pd并运行下面的代码并获得以下结果

码:

traindataset = pd.read_csv('/Users/train.csv')
print traindataset.dtypes
print traindataset.shape
print traindataset.iloc[25,3]
traindataset.dropna(how='any')
print traindataset.iloc[25,3]
print traindataset.shape
Run Code Online (Sandbox Code Playgroud)

产量

TripType                   int64  
VisitNumber                int64  
Weekday                   object  
Upc                      float64  
ScanCount                  int64  
DepartmentDescription     object  
FinelineNumber           float64  
dtype: object

(647054, 7)

nan  
nan

(647054, 7) 
[Finished in 2.2s]
Run Code Online (Sandbox Code Playgroud)

从结果来看,dropna行不起作用,因为行号没有改变,并且数据帧中仍然有NAN.那怎么样?我现在很疯狂.

python missing-data dataframe pandas

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

如何删除列中超过2个连续的NA?

我是R的新手,在我的数据框架中我有col1("Timestamp"),col2("Values").我必须在col2中删除超过2个连续NA的行.我的数据框看起来如下,

Timestamp  | values  
-----------|--------
2011-01-02 |  2  
2011-01-03 |  3  
2011-01-04 |  NA  
2011-01-05 |  1  
2011-01-06 |  NA  
2011-01-07 |  NA    
2011-01-08 |  8  
2011-01-09 |  6  
2011-01-10 |  NA  
2011-01-11 |  NA  
2011-01-12 |  NA  
2011-01-13 |  2  
Run Code Online (Sandbox Code Playgroud)

我想基于第二列删除超过2个重复行.预期产量 -

Timestamp  | values  
-----------|--------
2011-01-02 |  2  
2011-01-03 |  3  
2011-01-04 |  NA  
2011-01-05 |  1  
2011-01-06 |  NA  
2011-01-07 |  NA    
2011-01-08 |  8  
2011-01-09 |  6 
2011-01-13 |  2  
Run Code Online (Sandbox Code Playgroud)

我提前感谢您寻求解决方案.

datetime r duplicates missing-data

4
推荐指数
1
解决办法
475
查看次数

使用fillna在Pandas中用列表填充空值

给定一个pd.Series,我想用一个列表替换空值。也就是说,给定:

import numpy as np
import pandas as pd
ser = pd.Series([0,1,np.nan])
Run Code Online (Sandbox Code Playgroud)

我想要一个可以返回的函数

0        0
1        1
2    [nan]
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试使用自然函数,即fillna:

result = ser.fillna([np.nan])
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

TypeError:“值”参数必须是标量或字典,但您传递了“列表”

有什么简单的方法可以达到这个目的吗?

series missing-data python-3.x pandas fillna

4
推荐指数
1
解决办法
1330
查看次数

用NaN替换字典的空值

我有一个缺少值的字典(密钥在那里,但相关的值是空的).例如,我想要下面的字典:

dct = {'ID':'', 'gender':'male', 'age':'20', 'weight':'', 'height':'5.7'}
Run Code Online (Sandbox Code Playgroud)

要改为这种形式:

dct = {'ID':NaN, 'gender':'male', 'age':'20', 'weight':NaN, 'height':'5.7'}
Run Code Online (Sandbox Code Playgroud)

我怎样才能以最省时的方式写出来呢?

python dictionary missing-data

4
推荐指数
1
解决办法
3665
查看次数