【发布时间】: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