更改数据框的列名称

十年热恋 提交于 2020-02-28 06:42:26

我有一个名为“newprice”的数据框(见下文),我想在R中改变程序中的列名。

> newprice
   Chang.  Chang.   Chang.
1     100       36      136
2     120      -33       87
3     150       14      164

事实上,这正在做什么:

names(newprice)[1]<-paste("premium")
names(newprice)[2]<-paste("change")
names(newprice)[3]<-paste("newprice") 

我没有将它放在循环中,因为我希望每个列名称与您看到的不同。

当我将程序粘贴到R控制台时,这是它给我的输出:

> names(newprice)[1]<-paste(“premium”)
Error: unexpected input in "names(newprice)[1]<-paste(“"
> names(newprice)[2]<-paste(“change”)
Error: unexpected input in "names(newprice)[2]<-paste(“"
> names(newprice)[3]<-paste(“newpremium”)
Error: unexpected input in "names(newprice)[3]<-paste(“"

我同样尝试使用c()函数 - 例如c("premium") ,而不是paste()函数,但无济于事。

有人可以帮我解决这个问题吗?


#1楼

您可以通过以下方式进行编辑:

newprice <- edit(newprice)

并手动更改列名称。


#2楼

尝试:

names(newprice) <- c("premium", "change", "newprice")

#3楼

我用这个:

colnames(dataframe)[which(names(dataframe) == "columnName")] <- "newColumnName"

#4楼

与其他人类似:

cols <- c("premium","change","newprice")
colnames(dataframe) <- cols

非常简单易于修改。


#5楼

新建议的方法是使用setNames函数。 见?setNames 。 由于这会创建data.frame的新副本,因此如果您的意图是data.frame ,请务必将结果分配给原始data.frame

data_frame <- setNames(data_frame, c("premium","change","newprice"))

如果您使用早期答案建议的某些方式使用colnames ,则较新版本的R会向您发出警告。

如果这是data.table ,您可以使用data.table函数setnames ,它可以通过引用修改特定列名或单个列名:

setnames(data_table, "old-name", "new-name")
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!