Как получить имена столбцов с NA в качестве имени столбца - PullRequest
0 голосов
/ 29 марта 2019

Я очищаю файлы Excel, и одна из задач - получить правильные имена столбцов.В процессе я получаю NA для некоторых имен столбцов.Во всех таких случаях я хочу заполнить значение первой строки этого конкретного столбца.

Минимальный пример выглядит следующим образом:

structure(list(c(NA, "1"), c(NA, "FOB"), c(NA, "WEH, Nr. Oberoi"
), c("W", "60"), c("H", "10"), c(NA, "1"), c(NA, "600"), c(NA, 
"01.01.19"), c(NA, "31.01.19"), c(NA, "30"), c("Vendor", "Capital"
), c("Display Cost", "900000"), c(8L, 0L)), .Names = c("Sr. No.", 
"Media Vehicle", "Location", "Size", NA, "Qty", "Area", "Start Date", 
"End Date", "Duration", "CTU", NA, "2"), row.names = 4:5, class = "data.frame")

Требуемый вывод выглядит следующим образом:

structure(list(c(NA, "1"), c(NA, "FOB"), c(NA, "WEH, Nr. Oberoi"
), c("W", "60"), c("H", "10"), c(NA, "1"), c(NA, "600"), c(NA, 
"01.01.19"), c(NA, "31.01.19"), c(NA, "30"), c("Vendor", "Capital"
), c("Display Cost", "900000"), c(8L, 0L)), .Names = c("Sr. No.", 
"Media Vehicle", "Location", "Size", "H", NA, "Area", "Start Date", 
"End Date", "Duration", "CTU", "Display Cost", "2"), row.names = 4:5, class = "data.frame")

Я пытался использовать условие if, но так как есть триNA в именах, не уверен, что мне придется использовать цикл for для итерации по каждому значению na.

if (is.na(names(dat))) {
  b <- which(is.na(colnames(dat)))  
  names(dat)[b][1] <- dat[1,b] 
}

1 Ответ

1 голос
/ 29 марта 2019

Сначала мы можем найти индекс NA в именах, а затем использовать этот индекс для поднабора из первой строки кадра данных и присвоить имена.

inds <- is.na(names(df))
names(df)[inds] <- df[1, inds]


df
#  Sr. No. Media Vehicle        Location Size  H  Qty Area Start Date End Date Duration     CTU Display Cost 2
#4    <NA>          <NA>            <NA>    W  H <NA> <NA>       <NA>     <NA>     <NA>  Vendor Display Cost 8
#5       1           FOB WEH, Nr. Oberoi   60 10    1  600   01.01.19 31.01.19       30 Capital       900000 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...