标签: missing-data

查找向量中的最新非缺失值

我正在尝试使用不丢失的值返回向量中的最新行。例如,给定

x <- c(1,2,NA,NA,3,NA,4)
Run Code Online (Sandbox Code Playgroud)

然后,函数(x)将输出类似以下的列表:

c(1,2,2,2,3,3,4)
Run Code Online (Sandbox Code Playgroud)

非常简单的问题,但是在多个列上使用循环或蛮力运行它会永远花费。

r vector missing-data

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

在R中找不到缺少数据的行

我有一个数据框

Id  Name                      Affiliation
9   Ernest Jordan   
14  K. MORIBE   
15  D. Jakominich   
25  William H. Nailon   
37  P. B. Littlewood      Cavendish Laboratory|Cambridge University
44  A. Kuroiwa            Department of Molecular Biology|School of Science|Nagoya 
75  M. Till-berg    
Run Code Online (Sandbox Code Playgroud)

我想知道有多少行是不完整的,即缺少数据.在这种情况下,ID(9,14,15,25,75)的行有关联.所以在这种情况下结果应该是5.

我试过了

dim(author_data[complete.cases(author_data),])
Run Code Online (Sandbox Code Playgroud)

但它没有显示正确的结果.它输出为

7  3
Run Code Online (Sandbox Code Playgroud)

即7行3列

谢谢

r missing-data dataframe

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

在 R 中使用 is.na 获取包含 NA 值的列名

鉴于以下示例数据集:

df <- as.data.frame(matrix( c(1, 2, 3, NA, 5, NA, 
                              7, NA, 9, 10, NA, NA), nrow=2, ncol=6))

names(df) <- c(  "varA", "varB", "varC", "varD", "varE", "varF")

print(df)

  varA varB varC varD varE varF
1    1    3    5    7    9   NA
2    2   NA   NA   NA   10   NA
Run Code Online (Sandbox Code Playgroud)

我希望能够在数据集上使用 kmeans(...) ,而无需手动检查或删除变量内任何地方包含 NA的变量。虽然我现在正在询问 kmeans(...) 我将使用类似的过程处理其他事情,因此 kmeans(...) 具体答案不会完全回答我的问题。

我想要的手动版本是:

kmeans_model <- kmeans(df[, -c(2:4, 6)], 10) 
Run Code Online (Sandbox Code Playgroud)

伪代码将是:

kmeans_model <- kmeans(df[, -c(colnames(is.na(df)))], 10) 
Run Code Online (Sandbox Code Playgroud)

另外,我不想从 df 中删除数据。提前致谢。

(显然 kmeans(...) 不适用于此示例数据集,但我无法重新创建真实数据集)

r missing-data na

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

用NA值替换负值

NA在表中有正,负和值,我需要用值替换负值NA.正数和NA值应保持在表中.我的数据集类似于下面的数据集:

NO. q
1   NA
2   NA
3   -133.6105198
4   -119.6991209
5   28.84460104
6   66.05345087
7   84.7058947
8   -134.4522694
9   NA
10  NA
11  73.20465643
12  -69.90723514
13  NA
14  69.70833003
15  65.27859906
Run Code Online (Sandbox Code Playgroud)

我试过这个:

if (q>0) {
    q=NA
} else {
    q=q
}
Run Code Online (Sandbox Code Playgroud)

conditional r missing-data assign

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

填补组中的缺失值

我有一些缺少值的数据框

A 1
A NA
A NA
B NA
B 2
B NA
C NA
C NA
C NA
Run Code Online (Sandbox Code Playgroud)

如何填写有数据的组?

r missing-data

1
推荐指数
3
解决办法
2430
查看次数

r 计算每行缺失值的单元格

我有一个如下所示的数据框

    Id         Date         Col1       Col2     Col3        Col4
    30         2012-03-31              A42.2    20.46        NA  
    36         1996-11-15   NA                  V73          55
    96         2010-02-07   X48        Z16      13
    40         2010-03-18   AD14                20.12        36
    69         2012-02-21              22.45                     
    11         2013-07-03   81         V017                  TCG11         
    22         2001-06-01                       67
    83         2005-03-16   80.45      V22.15   46.52        X29.11 
    92         2012-02-12   
    34         2014-03-10   82.12      N72.22   V45.44
Run Code Online (Sandbox Code Playgroud)

我正在尝试计算每行中NA空单元格的数量,最终预期输出如下

    Id         Date         Col1       Col2     Col3        Col4       MissCount
    30         2012-03-31              A42.2    20.46        NA        2
    36         1996-11-15   NA                  V73          55        2
    96         2010-02-07   X48        Z16      13 …
Run Code Online (Sandbox Code Playgroud)

r count missing-data

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

删除缺少值由'?'表示的行

我有一个.csv包含缺少值的行的文件.这些值代替null,由字符表示?.

如何删除包含至少一个具有值的列的行?,因为它df.na.drop()不起作用(因为缺少的值不是null)?

数据如下所示(我有35列 - 可以在任何列中找到缺失值)

+-------+--------+------+-------+
| col_1 | col_2  |  ... | col_35|
+-------+--------+------+-------+
| 0.75  |   ?    |  ... |   15  |
|   ?   | Helen  |  ... |   21  |
| -1.2  | George |  ... |    ?  |
|   ?   | Andrew |  ... |   129 |
| 0.12  | Maria  |  ... |   12  |   // Should not be deleted
+-------+--------+------+-------+
Run Code Online (Sandbox Code Playgroud)

这是读取文件的代码.

val …
Run Code Online (Sandbox Code Playgroud)

scala missing-data apache-spark

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

r data.table 为多组列估算缺失值

我想为几组列估算缺失值。这个想法是对于数值变量,我想使用中位数来估算NA,对于分类变量,我想使用模式来估算NA. 我确实搜索了如何为不同的列集分别估算它,但没有找到。

我的数据很大,有很多列,所以我把它放在data.table 中。由于我不确定如何在 data.table 中执行此操作,因此我尝试了下面的代码库 R。我尝试了下面的代码,但不知何故,我似乎弄乱了列名标识。

我的数据很大并且有多个变量。我存储载体数值变量var_num,我存储载体分类变量var_chr

请参阅下面的示例代码 -

library(data.table)
set.seed(1200)
id <- 1:100
bills <- sample(c(1:20,NA),100,replace = T)
nos <- sample(c(1:80,NA),100,replace = T)
stru <- sample(c("A","B","C","D",NA),100,replace = T)
type <- sample(c(1:7,NA),100,replace = T)
value <- sample(c(100:1000,NA),100,replace = T)

df1 <- as.data.table(data.frame(id,bills,nos,stru,type,value))
class(df1)

var_num <- c("bills","nos","value")
var_chr <- c("stru","type")

impute <- function(x){
  #print(x)
  if(colnames(x) %in% var_num){
    x[is.na(x)] = median(x,na.rm = T)
  } else if (colnames(x) …
Run Code Online (Sandbox Code Playgroud)

r function missing-data data.table imputation

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

在pandas中的整数数据框中使用DataFrame.at分配nan值时的ValueError

我有以下DataFrame由整数值组成:

df = pd.DataFrame(data=1, columns=['a','b'], index=[1,2,3])

   a  b
1  1  1
2  1  1
3  1  1
Run Code Online (Sandbox Code Playgroud)

我想在单个单元格上设置缺失值,当我尝试时:

df.at[1,'a'] = np.nan
Run Code Online (Sandbox Code Playgroud)

然后我得到这个例外:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "pandas/core/indexing.py", line 2159, in __setitem__
    self.obj._set_value(*key, takeable=self._takeable)
  File "pandas/core/frame.py", line 2582, in _set_value
    engine.set_value(series._values, index, value)
  File "pandas/_libs/index.pyx", line 124, in pandas._libs.index.IndexEngine.set_value
  File "pandas/_libs/index.pyx", line 133, in pandas._libs.index.IndexEngine.set_value
  File "pandas/_libs/index.pyx", line 570, in pandas._libs.index.convert_scalar
ValueError: Cannot assign nan to integer series
Run Code Online (Sandbox Code Playgroud)

python missing-data dataframe pandas

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

使用最接近缺失值的日期的值来填充缺失值

我知道如何使用带有填充或填充的groupby方法来估算缺少的值。但是我的问题是,我需要首先在“日期”列中找到与“得分”列中的空值最接近的日期,如果分数列中的值不为空,则用该值进行插补。如果该值为空,则需要搜索另一个最近的日期。我可以遍历行并执行此操作,但是速度非常慢。

这是数据的示例:

df = pd.DataFrame(
     {'cn': [1, 1, 1, 1, 2, 2, 2], 
      'date': ['01/10/2017', '02/09/2016', '02/10/2016','01/20/2017', '05/15/2019', '02/10/2016', '02/10/2017'],
      'score': [np.nan, np.nan, 6, 5, 4, np.nan, 8]})

    cn  date    score
0   1   01/10/2017  NaN
1   1   02/09/2016  NaN
2   1   02/10/2016  6
3   1   01/20/2017  5
4   2   05/15/2019  4
5   2   02/10/2016  NaN
6   2   02/10/2017  8.0
Run Code Online (Sandbox Code Playgroud)

输出应该是

    cn  date    score
0   1   01/10/2017  5
1   1   02/09/2016  6
2   1   02/10/2016  6
3   1   01/20/2017  5
4 …
Run Code Online (Sandbox Code Playgroud)

python missing-data pandas

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