如何重命名data.frame中的单个列?
我知道如果我有超过1列的数据框,我可以使用
colnames(x) <- c("col1","col2")
重命名列。 如果只有一列,我该怎么做? 意思是只有一列的vector或数据框。
例:
trSamp <- data.frame(sample(trainer$index, 10000)) head(trSamp ) # sample.trainer.index..10000. # 1 5907862 # 2 2181266 # 3 7368504 # 4 1949790 # 5 3475174 # 6 6062879 ncol(trSamp) # [1] 1 class(trSamp) # [1] "data.frame" class(trSamp[1]) # [1] "data.frame" class(trSamp[,1]) # [1] "numeric" colnames(trSamp)[2] <- "newname2" # Error in names(x) <- value : # 'names' attribute [2] must be the same length as the vector [1]
colnames(trSamp)[2] <- "newname2"
尝试设置第二列的名称。 你的对象只有一列,所以这个命令会抛出一个错误。 这应该足够了:
colnames(trSamp) <- "newname2"
这是一种通用的方式,您不必记住variables的确切位置:
# df = dataframe # old.var.name = The name you don't like anymore # new.var.name = The name you want to get names(df)[names(df) == 'old.var.name'] <- 'new.var.name'
这段代码几乎做了以下事情:
-
names(df)
查看names(df)
所有名称 -
[names(df) == old.var.name]
提取您想要检查的variables名称 -
<- 'new.var.name'
分配新的variables名称。
colnames(df)[colnames(df) == 'oldName'] <- 'newName'
这是一个老问题,但值得注意的是,现在可以使用data.table
包中的data.table
。
library(data.table) setnames(DF, "oldName", "newName") # or since the data.frame in question is just one column: setnames(DF, "newName") # And for reference's sake, in general (more than once column) nms <- c("col1.name", "col2.name", etc...) setnames(DF, nms)
这也可以通过使用Hadley的plyr
包和rename
function来完成。
library(plyr) df <- data.frame(foo=rnorm(1000)) df <- rename(df,c('foo'='samples'))
您可以通过名称进行重命名(不知道位置),并一次执行多个重命名。 例如,在合并之后,您可能会得到:
letterid id.x id.y 1 70 2 1 2 116 6 5 3 116 6 4 4 116 6 3 5 766 14 9 6 766 14 13
您可以使用以下方法一步重命名:
letters <- rename(letters,c("id.x" = "source", "id.y" = "target")) letterid source target 1 70 2 1 2 116 6 5 3 116 6 4 4 116 6 3 5 766 14 9 6 766 14 13
我喜欢下一个重新命名dataframe列名的样式。
colnames(df)[which(colnames(df) == 'old_colname')] <- 'new_colname'
哪里
which(colnames(df) == 'old_colname')
由特定列的索引返回。
尝试:
colnames(x)[2] <- 'newname2'
我认为重命名列的最好方法是使用这样的dplyr包:
require(dplyr) df = rename(df, new_col01 = old_col01, new_col02 = old_col02, ...)
对于重命名任何数据集中的一列或多列,它的工作原理是一样的。
如果你知道你的数据names(trSamp) <- "newname2"
只有一列,你可以使用: names(trSamp) <- "newname2"
你也可以尝试'Hmisc'包中的'upData'。
library(Hmisc)
trSamp = upData(trSamp, rename=c(sample.trainer.index..10000. = 'newname2'))
你可以使用gdata
包中的rename.vars
。
library(gdata) df <- rename.vars(df, from = "oldname", to = "newname")
当你有多个variables名称要改变,或者你想要将一些文本添加到variables名称中时,这是特别有用的,然后你可以这样做:
df <- rename.vars(df, from = c("old1", "old2", "old3", to = c("new1", "new2", "new3"))
有关将文本附加到variables名称子集的示例,请参阅: https : //stackoverflow.com/a/28870000/180892
这可能已经在那里,但我正在寻找一个解决scheme,并尝试了这个一时兴起的重命名领域。 为我的目的工作。
Table1$FieldNewName <- Table1$FieldOldName Table1$FieldOldName <- NULL
编辑从这里开始….
这也适用。
df <- rename(df, c("oldColName" = "newColName"))