从数据框中删除特定列

时间:2017-03-24 16:28:09

标签: r dataframe

我正在尝试从数据框(followed this)中删除一组列,但我收到了错误。

具体来说,数据框的大小(NNF.data)是34233行,有147列:

[118] "NNF.2015.03.EUR"      "NNF.2015.04.EUR"      "NNF.2015.05.EUR"     
[121] "NNF.2015.06.EUR"      "NNF.2015.07.EUR"      "NNF.2015.08.EUR"     
[124] "NNF.2015.09.EUR"      "NNF.2015.10.EUR"      "NNF.2015.11.EUR"     
[127] "NNF.2015.12.EUR"      "NNF.2016.01.EUR"      "NNF.2016.02.EUR"     
[130] "NNF.2016.03.EUR"      "NNF.2016.04.EUR"      "NNF.2016.05.EUR"     
[133] "NNF.2016.06.EUR"      "NNF.2016.07.EUR"      "NNF.2016.08.EUR"     
[136] "YTD.NNF.Year2005.EUR" "YTD.NNF.Year2006.EUR" "YTD.NNF.Year2007.EUR"
[139] "YTD.NNF.Year2008.EUR" "YTD.NNF.Year2009.EUR" "YTD.NNF.Year2010.EUR"
[142] "YTD.NNF.Year2011.EUR" "YTD.NNF.Year2012.EUR" "YTD.NNF.Year2013.EUR"
[145] "YTD.NNF.Year2014.EUR" "YTD.NNF.Year2015.EUR" "YTD.NNF.Year2016.EUR"

我想要做的是删除136-147中的列,或者名称中包含YTD的列。

我尝试使用

NNF.data[, grep("YTD", names(NNF.data)):= NULL]

但是我收到了错误:

Error in `[.data.frame`(NNF.data, , `:=`(grep("YTD", names(NNF.data)),  : 
  could not find function ":="

同样,我试过

NNF.data[, which(grepl("YTD", colnames(NNF.data))):=NULL]

但是,我得到了

Error in `[.data.frame`(NNF.data, , `:=`(which(grepl("YTD", colnames(NNF.data))),  : 
  could not find function ":="

有什么建议吗? 我确保NNF.data是一个数据框

> is.data.frame(NNF.data)
[1] TRUE

2 个答案:

答案 0 :(得分:1)

:=仅适用于data.table个对象。如果您使用的是data.frame,可以试试这个:

df = data.frame(First = c(1,2,3), AVSecond = c(3,4,5), ThirdAV = c(6,7,8), Fourth = c(10,22,2))

df = df[-c(grep("AV", colnames(df)), 4)]

这将删除其中包含'AV'和第四列的列。输出:

  First
1     1
2     2
3     3

答案 1 :(得分:0)

shouldComponentUpdate