Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何获取以NA作为列名的列名_R - Fatal编程技术网

R 如何获取以NA作为列名的列名

R 如何获取以NA作为列名的列名,r,R,我正在清理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, "

我正在清理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")
所需的输出如下:

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] 
}
if(is.na(names(dat))){

b我们可以首先在名称中找到
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
inds