为什么我的数据框使用我未分配的列名?

时间:2019-01-25 19:17:03

标签: r

我正在尝试创建一个数据框,该数据框是另一个数据框的子集,但是我想更改列名。我知道可以通过使用names()或colnames()函数来完成此操作,但是我想在创建数据框时进行名称更改。

temp2<- data.frame(
    'year' = (ncdata[,'year'] + 1),
    'report' = (ncdata[,'report'] + 1),
    'prev_period_last_year' = ncdata[,'received']
  )

我希望temp2包含3列名称(年份,报告和prev_period_last_year)。取而代之的是,temp2的第三列仅使用来自ncdata的原始名称。为什么会这样?

编辑:为了回应评论,我尝试在数据框声明中省略引号,并且尝试使用所需ncdata列的数字索引而不是列名。两种更改都没有任何效果。

2 个答案:

答案 0 :(得分:1)

尝试一下。遵循这种语法

data1<-data.frame(Year=c(2017,2016,2019),Received=c(340,560,780))
data1
data.frame(Test=data1[,1]+1,Test1=data1[,2]+1)

结果:

 Test Test1
1 2018   341
2 2017   561
3 2020   781

这也有效:

data.frame(Testme=data1[,"Year"]+1)
  Testme
1   2018
2   2017
3   2020

答案 1 :(得分:1)

使用selectdplyr包中的tidyverse。它可以同时用于重命名和子集。

library(tidyverse)

temp2 <- ncdata %>%
  select(year,
         report,
         prev_period_last_year = received)
相关问题