Rob*_*ick 39 r rename dataframe
我想重命名一个大型数据框的随机列,我想使用当前列名,而不是索引.如果我向数据添加或删除列,列索引可能会更改,因此我认为使用现有列名称是一种更稳定的解决方案.这就是我现在拥有的:
mydf = merge(df.1, df.2)
colnames(mydf)[which(colnames(mydf) == "MyName.1")] = "MyNewName"
Run Code Online (Sandbox Code Playgroud)
我可以简化此代码,无论是原始merge()呼叫还是仅仅是第二行?"MyName.1"实际上merge是两个不同xts对象的xts的结果.
Mat*_*wle 148
更改a的列名的麻烦data.frame是,几乎令人难以置信的data.frame是,整个被复制.即使它在,.GlobalEnv并没有其他变量指向它.
该data.table包具有一个setnames()函数,该函数通过引用更改列名而不复制整个数据集.data.table不同之处在于它不会写入时复制,这对于大型数据集非常重要.(你的确说你的数据集很大.)只需提供old和new名称:
require(data.table)
setnames(DT,"MyName.1", "MyNewName")
# or more explicit:
setnames(DT, old = "MyName.1", new = "MyNewName")
?setnames
Run Code Online (Sandbox Code Playgroud)
Bra*_*sen 26
names(mydf)[names(mydf) == "MyName.1"] = "MyNewName" # 13 characters shorter.
Run Code Online (Sandbox Code Playgroud)
虽然,您可能希望最终替换矢量.在这种情况下,使用%in%而不是==将MyName.1设置为与MyNewName相等长度的向量
had*_*ley 25
plyr 为此目的有一个重命名功能:
library(plyr)
mydf <- rename(mydf, c("MyName.1" = "MyNewName"))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67878 次 |
| 最近记录: |