Подтвердить что ты не робот

Изменение имени столбца путем поиска

Я знаю, что я могу изменить имя столбца data.frame:

colnames(df)[3] <- "newname"

Но могут быть случаи, когда столбец, который я хочу изменить, не находится в третьей позиции. Есть ли способ посмотреть столбец по имени и изменить его? Как это...

colnames(df)[,"oldname"] <- "newname"

Кстати, я пробовал этот код, и я продолжаю получать incorrect number of subscripts on matrix.

Спасибо.

4b9b3361

Ответ 1

colnames(df)[colnames(df)=="oldname"] <- "newname"

или просто names

names(df)[names(df)=="oldname"] <- "newname"

Существуют различные функции для переименования столбцов в пакетах.

Ответ 2

colnames(df)[colnames(df)=="oldname"] <- "newname"

или

names(df)[names(df)=="oldname"] <- "newname"

(поскольку names и colnames эквивалентны для кадра данных)

или, вы можете искать

library(reshape)
df <- rename(df,c(oldname="newname"))

Ответ 3

Я использовал пакет data.table сегодня, и когда я попытался изменить имя столбца, используя мой обычный метод, появилось сообщение, рекомендующее этот подход:

library(data.table)

df <- read.table(text= "
          region    state  county
             1        1       1  
             1        2       2  
             1        2       3 
             2        1       4
             2        1       4
", header=TRUE, na.strings=NA)

df

setnames(df, "county", "district")

df

Ответ 4

Несколько более общий подход, который заменит все "старые" s в начале любого текущего имени "новым" в том же месте символа:

names(df) <- sub("^old", "new", names(df) )