【问题标题】:How to remove rows from a data table when the column headings are year labels [duplicate]当列标题是年份标签时如何从数据表中删除行[重复]
【发布时间】:2017-05-10 10:18:11
【问题描述】:

例如,我有一个列标题为年份的数据表

头部(gsdb_crossTab)

CONS_ID_URN     2010 2011 2012 2013 2014 2015 2016 2017
0TBX58            9   11   13   12   12   12   12    2
1                 2    4    1    0    0    0    0    0
1000000           0    0    1    0    1    0    0    0
1000007           1    0    0    0    1    1    0    0
1000009           0    0    0    0    1    0    0    0
1000010           0    1    1    0    1    0    0    1

class(gsdb_crossTab)
[1] "data.table" "data.frame"

如果我尝试删除 2010 列中值为 0 的行 与

dummy=gsdb_crossTab["2010">0]

然后我仍然发现 dummy 包含 2010 列中的行,其中行等于包含零。

但是:如果我重命名列使用

setnames(gsdb_crossTab, "2010", "FRED")

然后进行过滤

gsdb_crossTab <- gsdb_crossTab[FRED>0]

然后我得到了我期望的结果。

我的问题是:请有人建议一种执行此操作的方法 没有将列重命名为 FRED,即使用列标签“2010”?

谢谢,

菲尔,

【问题讨论】:

  • 使用$操作符,如果colname是“2012”那么它应该像这样工作:gsdb_crossTab[gsdb_crossTab$2012>0,],确保在年份中添加连字符,使用$ 应该会自动检测变量
  • @timfaber,我想那会返回Error: unexpected numeric constant in "gsdb_crossTab $2010"
  • 因此是连字符:)

标签: r data.table filtering


【解决方案1】:

使用反引号(我不能把它放在评论中,因为它使用重音)

dummy <- gsdb_crossTab[`2010` > 0]

【讨论】:

    猜你喜欢
    • 2014-05-21
    • 2022-01-17
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多