Как изменить имена столбцов и создать фрейм данных столбцов в наборе данных - PullRequest
0 голосов
/ 14 февраля 2020

Я создаю функцию для изменения имен столбцов из 3 столбцов и создания нового фрейма данных с 3 столбцами. Имя файла - noaaFilename, а Date, HrMn и Slp были более ранними именами столбцов и новыми именами, которые я хочу использовать в качестве Date, Time, AtmosPressure.

  names(noaaFilename)[names(noaaFilename) == "Date"] <- "Date"
  names(noaaFilename)[names(noaaFilename) == "HrMn"] <- "Time"
  names(noaaFilename)[names(noaaFilename) == "Slp"] <- "AtmosPressure"

  noaaData <- subset(noaaFilename, select = c(Date, Time, AtmosPressure))

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020
mysubset <- function(df, oldnames, newnames){
  if(length(oldnames)!=length(newnames)){
    stop("oldnames and newnames are not the same length")
  }
  if(!all(oldnames%in%colnames(df)){
    stop("Not all of oldnames match column names of df")
  }
  df <- df[,oldnames, drop = F]
  colnames(df) <- newnames
  return(df)
}

Пример с набором данных радужной оболочки.

head(iris)
#  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1          5.1         3.5          1.4         0.2  setosa
#2          4.9         3.0          1.4         0.2  setosa
#3          4.7         3.2          1.3         0.2  setosa
#4          4.6         3.1          1.5         0.2  setosa
#5          5.0         3.6          1.4         0.2  setosa
#6          5.4         3.9          1.7         0.4  setosa
tmp <- mysubset(iris,
                oldnames = c("Sepal.Length","Sepal.Width","Species"),
                newnames = c("Date","Time","AtmosPressure"))
head(tmp)
#  Date Time AtmosPressure
#1  5.1  3.5        setosa
#2  4.9  3.0        setosa
#3  4.7  3.2        setosa
#4  4.6  3.1        setosa
#5  5.0  3.6        setosa
#6  5.4  3.9        setosa

При таком написании функции вам не нужно указывать только 3 столбца.

0 голосов
/ 14 февраля 2020
noaaData <- subset(noaaFilename, select = c(Date, HrMn, Slp))

names(noaaData) <- c("Date", "Time", "AtmosPressure")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...