如何将第一行更改为R中的标题?

PMa*_*PMa 4 r columnheader

我有下表:

     X.5       X.6       X.7       X.8          X.9 X.10         X.11  X.12   X.13
17   Zip CuCurrent PaCurrent PoCurrent      Contact  Ext          Fax email Status
18  74136         0         1         0 918-491-6998    0 918-491-6659            1
19  30329         1         0         0 404-321-5711                              1
20  74136         1         0         0 918-523-2516    0 918-523-2522            1
21  80203         0         1         0 303-864-1919    0                         1
22  80120         1         0         0 345-098-8890  456                         1
Run Code Online (Sandbox Code Playgroud)

如何使第一行'zip,cucurrent,pacurrent ...'成为列标题?

谢谢,

下边是 dput(dat)

dput(dat)结构(列表(X.5 =结构(c(26L,14L,6L,14L,17L,16L),.Label = c("","1104","1234我不知道Ave. ","139.98","300 Morgan St.","30329","312.95","4101 S. 4th Street,Traff","500 Highway 89 North","644.04","656.73","72160", "72336-7000","74136","75501","80120","80203","877.87","地址1","BZip","General Svcs Admin(WPY)","InvFileName2","LDC_Org_Cost" ,"N/A","NULL","Zip"),class ="factor"),X.6 =结构(c(7L,2L,3L,3L,2L,3L),. Label = c(" ","0","1","301 7th St. SW","800-688-6160","Address2","CuCurrent","Emergency","LDC_Cost_Adj","Mtelemetry","N/A ",""NULL","套件1402"),类="因子"),X.7 =结构(c(8L,3L,2L,2L,3L,2L),. Label = c("","0 ","1","Address3","Cucustomer","LDC_Misc_Fee","NULL","PaCurrent","Room 7512"),class ="factor"),X.8 =结构(c(14L,2L) ,2L,2L,2L,2L),. Label = c("","0","100.98","237.02","242.33","335.04","50.6","城市","达勒姆", "LDC_FinalVolume","Leavenwoth","Pacustomer","彼得斯 burg","PoCurrent","Prescott","Washington"),class ="factor"),X.9 =结构(c(18L,16L,10L,17L,7L,9L),. Label = c(" ","0","1","139.98","20024","27701","303-864-1919","312.95","345-098-8890","404-321-5711", "644.04","656.73","66048","86313","877.87","918-491-6998","918-523-2516","联系方式","LDC_FinalCost","PoCustomer","Zip "),class ="factor"),X.10 =结构(c(14L,2L,1L,2L,2L,9L),. Label = c("","0","2.620194604","2.710064788" ,"2.717239052","2.766403162","202-708-4995","3.09912854","456","804-504-7200","913-682-2000","919-956-5541"," 928-717-7472","Ext","InvoicesNeeded","LDC_UnitPrice","NULL","Phone"),class ="factor"),X.11 =结构(c(7L,4L,1L,5L) ,1L,1L),. Label = c("","","1067","918-491-6659","918-523-2522","Ext","Fax","InvoiceMonths"," LDC_UnitPrice_Original","NULL","x2951"),class ="factor"),X.12 =结构(c(13L,1L,1L,1L,1L,1L),. Label = c("","0 ","100.98","202-401-3722","237.02","242.33","335.04","50 .6","716-344-3303","804-504-7227","913-758-4230","919-956-7152","电子邮件","传真","GSA","Supp_Vol "),class ="factor"),X.13 =结构(c(10L,2L,2L,2L,2L,2L),. Label = c("","1","15","202-" 497-6164","3","804-504-7200","紧急","MajorTypeId","NULL","状态","Supp_Vol_Adj"),class ="factor")),. Name = c ("X.5","X.6","X.7","X.8","X.9","X.10","X.11","X.12"," X.13"),row.names = 17:22,class ="data.frame")

Ric*_*ven 15

如果您不想将数据重新读入R(您似乎没有从评论中获取),则可以执行以下操作.我不得不添加一些零来让你的数据完全读取,所以忽略这些.

dat
##       V2        V3        V4        V5           V6  V7           V8    V9    V10
## 17   Zip CuCurrent PaCurrent PoCurrent      Contact Ext          Fax email Status
## 18 74136         0         1         0 918-491-6998   0 918-491-6659     0      1
## 19 30329         1         0         0 404-321-5711   0            0     0      1
## 20 74136         1         0         0 918-523-2516   0 918-523-2522     0      1
## 21 80203         0         1         0 303-864-1919   0            0     0      1
## 22 80120         1         0         0 345-098-8890 456            0     0      1
Run Code Online (Sandbox Code Playgroud)

首先将第一行作为列名.接下来删除第一行.通过将列转换为适当的类型来完成它.

names(dat) <- as.matrix(dat[1, ])
dat <- dat[-1, ]
dat[] <- lapply(dat, function(x) type.convert(as.character(x)))
dat
##     Zip CuCurrent PaCurrent PoCurrent      Contact Ext          Fax email Status
## 1 74136         0         1         0 918-491-6998   0 918-491-6659     0      1
## 2 30329         1         0         0 404-321-5711   0            0     0      1
## 3 74136         1         0         0 918-523-2516   0 918-523-2522     0      1
## 4 80203         0         1         0 303-864-1919   0            0     0      1
## 5 80120         1         0         0 345-098-8890 456            0     0      1
Run Code Online (Sandbox Code Playgroud)


Sha*_*wal 13

这可能是一种简单的方式:

第 1 步:将第一行复制到标题:

names(dat) <- dat[1,]
Run Code Online (Sandbox Code Playgroud)

第 2 步:删除第一行:

dat <- dat[-1,]
Run Code Online (Sandbox Code Playgroud)


Laz*_*ton 8

最简洁的方法是为此目的设计一个简单的函数。你需要看门人包。

janitor::row_to_names(dat)
Run Code Online (Sandbox Code Playgroud)

如果您希望第 n 行用于列名,则该函数的第二个参数是要使用的行号。默认值为 1。

  • 默认值对我来说似乎不是 1。可能需要 `row_number =1` (2认同)

Roc*_*nce 5

如果您从 csv 文件获取它,请使用 read.csv 中的参数“header”

dat=read.csv("gas.csv", header=TRUE)
Run Code Online (Sandbox Code Playgroud)

如果您已经拥有数据但不想/或无法以干净的方式获取它,您始终可以这样做

dat=structure(list(X.5 = structure(c(26L, 14L, 6L, 14L, 17L, 16L), .Label = c("", "1104", "1234 I don't know Ave.", "139.98", "300 Morgan St.", "30329", "312.95", "4101 S. 4th Street, Traff", "500 Highway 89 North", "644.04", "656.73", "72160", "72336-7000", "74136", "75501", "80120", "80203", "877.87", "Address1", "BZip", "General Svcs Admin (WPY)", "InvFileName2", "LDC_Org_Cost", "N/A", "NULL", "Zip"), class = "factor"), X.6 = structure(c(7L, 2L, 3L, 3L, 2L, 3L), .Label = c("", "0", "1", "301 7th St. SW", "800-688-6160", "Address2", "CuCurrent", "Emergency", "LDC_Cost_Adj", "Mtelemetry", "N/A", "NULL", "Suite 1402"), class = "factor"), X.7 = structure(c(8L, 3L, 2L, 2L, 3L, 2L), .Label = c("", "0", "1", "Address3", "Cucustomer", "LDC_Misc_Fee", "NULL", "PaCurrent", "Room 7512"), class = "factor"), X.8 = structure(c(14L, 2L, 2L, 2L, 2L, 2L), .Label = c("", "0", "100.98", "237.02", "242.33", "335.04", "50.6", "City", "Durham", "LDC_FinalVolume", "Leavenwoth", "Pacustomer", "Petersburg", "PoCurrent", "Prescott", "Washington"), class = "factor"), X.9 = structure(c(18L, 16L, 10L, 17L, 7L, 9L), .Label = c("", "0", "1", "139.98", "20024", "27701", "303-864-1919", "312.95", "345-098-8890", "404-321-5711", "644.04", "656.73", "66048", "86313", "877.87", "918-491-6998", "918-523-2516", "Contact", "LDC_FinalCost", "PoCustomer", "Zip"), class = "factor"), X.10 = structure(c(14L, 2L, 1L, 2L, 2L, 9L), .Label = c("", "0", "2.620194604", "2.710064788", "2.717239052", "2.766403162", "202-708-4995", "3.09912854", "456", "804-504-7200", "913-682-2000", "919-956-5541", "928-717-7472", "Ext", "InvoicesNeeded", "LDC_UnitPrice", "NULL", "Phone"), class = "factor"), X.11 = structure(c(7L, 4L, 1L, 5L, 1L, 1L), .Label = c("", " ", "1067", "918-491-6659", "918-523-2522", "Ext", "Fax", "InvoiceMonths", "LDC_UnitPrice_Original", "NULL", "x2951"), class = "factor"), X.12 = structure(c(13L, 1L, 1L, 1L, 1L, 1L), .Label = c("", "0", "100.98", "202-401-3722", "237.02", "242.33", "335.04", "50.6", "716- 344-3303", "804-504-7227", "913- 758-4230", "919- 956-7152", "email", "Fax", "GSA", "Supp_Vol"), class = "factor"), X.13 = structure(c(10L, 2L, 2L, 2L, 2L, 2L), .Label = c("", "1", "15", "202-497-6164", "3", "804-504-7200", "Emergency", "MajorTypeId", "NULL", "Status", "Supp_Vol_Adj"), class = "factor")), .Names = c("X.5", "X.6", "X.7", "X.8", "X.9", "X.10", "X.11", "X.12", "X.13"), row.names = 17:22, class = "data.frame")
dat2 = dat[2:6,]   
colnames(dat2) = dat[1,] 
dat2
Run Code Online (Sandbox Code Playgroud)