R按行中的名称替换标题

时间:2014-01-28 17:26:11

标签: r header dataframe

我想用第一行中的标题替换data.frame的标头。 数据已使用read.xls()导入。遗憾的是,再次阅读原始文件是没有选择的。

     bad header    here
1    new    header2   here
2    58 3.222     50
3    25 10.000    40
4    5  0.847     152.5
5   15  1.633     98

结果应如下所示:

    new header2   here
1   58  3.222     50
2   25  10.000    40
3   5   0.847     152.5
4   15  1.633     98

谢谢,

马特

2 个答案:

答案 0 :(得分:1)

假设您的data.frame被称为“mydf”,您可以尝试这样的事情:

df2 <- setNames(mydf[-1, ], mydf[1, ])

但是,您的数据将全部是字符或因素,具体取决于它们最初的读取方式。

str(df2)
# 'data.frame': 4 obs. of  3 variables:
#  $ new    : chr  "58" "25" "5" "15"
#  $ header2: chr  "3.222" "10.000" "0.847" "1.633"
#  $ here   : chr  "50" "40" "152.5" "98"

您可以按如下方式转换:

df2[] <- lapply(df2, function(x) type.convert(as.character(x)))
str(df2)
# 'data.frame': 4 obs. of  3 variables:
#  $ new    : int  58 25 5 15
#  $ header2: num  3.222 10 0.847 1.633
#  $ here   : num  50 40 152 98
df2
#   new header2  here
# 2  58   3.222  50.0
# 3  25  10.000  40.0
# 4   5   0.847 152.5
# 5  15   1.633  98.0

答案 1 :(得分:1)

假设您的数据名为my.data.frame,只需将第1行分配给标题,然后删除第1行

    #assign row 1 names to the header          
    names(my.data.frame) <- as.character(my.data.frame[1,])

    #delete the first row
    my.data.frame <- my.data.frame[2:nrow(my.data.frame),]