我正在学习 R 编程,因此遇到了一些问题 - 在您的帮助下已经能够解决这些问题。
但我现在需要重命名数据框的列。我有一个带有 2 列的翻译数据框,其中包含列名称和新列的名称。
这是我的代码:我的问题是如何从trans数据框中选择两列并将它们用作trans$old和trans$new变量?
我有 7 列要重命名,因此翻译表可能会更长。
replace_header <- function()
{
names(industries)[names(industries)==trans$old] <- trans$new
replaced <- industries
return (replaced)
}
replaced_industries <- replace_header()
Run Code Online (Sandbox Code Playgroud)
这是使用内置mtcars数据框的示例。我们将使用该match函数查找要替换的列名称的索引,然后将它们替换为新名称。
# Copy of built-in data frame
mt = mtcars
head(mt,3)
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
# Data frame with column name substitutions
dat = data.frame(old=c("mpg","am"), new=c("new.name1","new.name2"), stringsAsFactors=FALSE)
dat
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)old new 1 mpg new.name1 2 am new.name2
Use match to find the indices of the "old" names in the mt data frame:
match(dat[,"old"], names(mt))
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)[1] 1 9
Substitute "old" names with "new" names:
names(mt)[match(dat[,"old"], names(mt))] = dat[,"new"]
head(mt,3)
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)new.name1 cyl disp hp drat wt qsec vs new.name2 gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
| 归档时间: |
|
| 查看次数: |
3636 次 |
| 最近记录: |