【问题标题】:Delete Column by Column label/name as X.ERROR, X.ERROR.2 in R - Datastream在R中按列标签/名称删除列作为X.ERROR,X.ERROR.2 - 数据流
【发布时间】:2015-12-29 17:24:34
【问题描述】:

我从包含 5413 家公司的数据流中下载了 15 年的伦敦证券交易所股票价格数据。当您从Datastream下载数据时,数据不可用的公司在列标签中将公司名称替换​​为#ERROR。我以excel表为例

Date        A B #ERROR #ERROR  E F
31-12-1999  1 2                3 4
3-1-2000                      

所以,当我将它导入 R 时,我有

Date         A  B X. ERROR  X.ERROR.1  E F
1999-12-31   1  2                      3 4
2000-1-3     NA NA                     NA NA

可以看出,R 将其更改为 X.ERROR 和 X.ERROR.1 并且行是空白,甚至没有分配 NA。我的数据集很大,申请Price$X.ERROR <- NULL 会很麻烦。此外,我发现它效率低下。 那么,如何在我的数据集中找到所有这些 X:ERROR 然后删除这些列。

【问题讨论】:

    标签: r excel data-stream


    【解决方案1】:

    我创建一个示例数据框如下:

    df <- data.frame(Date = 1:5,
                     A = 1:5,
                     B = 1:5,
                     X.ERROR = 1:5,
                     X.ERROR.1 = 1:5,
                     E = 1:5,
                     F = 1:5)
    df
    ##   Date A B X.ERROR X.ERROR.1 E F
    ## 1    1 1 1       1         1 1 1
    ## 2    2 2 2       2         2 2 2
    ## 3    3 3 3       3         3 3 3
    ## 4    4 4 4       4         4 4 4
    ## 5    5 5 5       5         5 5 5
    

    然后我搜索要删除的列的名称:

    to_del <- grepl("X.ERROR", names(df))
    

    对于名称中包含 "X.ERROR" 的所有列,这将返回 TRUE。现在您可以将它们从数据框中删除:

    df <- df[!to_del]
    df
    ##   Date A B E F
    ## 1    1 1 1 1 1
    ## 2    2 2 2 2 2
    ## 3    3 3 3 3 3
    ## 4    4 4 4 4 4
    ## 5    5 5 5 5 5
    

    【讨论】:

      猜你喜欢
      • 2018-05-17
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 2011-07-11
      相关资源
      最近更新 更多