簡體   English   中英

將列名轉換為 R 中數據框的第一行

[英]Convert Column names into first row of Data frame in R

我想更改現有 dataframe 的列名而不刪除它。

我需要的那些列名稱作為我的 dataframe 的第一行。

eg.

Existing dataframe 

df = data.frame(x = c("P1","P2","P3","P4","P5"),
                y = c("DC","DC","DC","DC","DC"),
                f_1 = c("NA","1","NA","NA","NA"), 
                f_2= c("NA","1","NA","NA","NA"),
                f_3= c("1","7","NA","NA","NA"),
                f_4= c("NA","NA","5","NA","NA"),
                f_5= c("NA","NA","2","NA","NA"),
                stringsAsFactors = FALSE)

I want to change those col names with another data frame column names.

df1 = data.frame(A = c("P1"),
                 B = c("p2"),
                C = c("p3"), 
                D= c("p4"),
                E= c("p8"),
                F= c("p9"),
                G= c("p8"),
                stringsAsFactors = FALSE)

必填 Output:

Df
    
        
        A    B    C    D    E    F    G
    1   x    y   f_1  f_2   f_3  f_4  f_5
    2   P1  DC   NA   NA    1    NA   NA
    3   P2  DC   1    1     7    NA   NA 
    4   P3  DC   NA   NA    NA   5    2
    5   P4  DC   NA   NA    NA   NA   NA
    6   P5  DC   NA   NA    NA   NA   NA

我試過但不正確。

df1<-as.data.frame(t(as.character(unlist(colnames(df1)))))
  
colnames(df1) <- df[1,]

有人知道正確的方法嗎??

base R中,只需rbind第一個數據的列名,然后設置列名

setNames(rbind(names(df), df), names(df1))
#  A  B   C   D   E   F   G
#1  x  y f_1 f_2 f_3 f_4 f_5
#2 P1 DC  NA  NA   1  NA  NA
#3 P2 DC   1   1   7  NA  NA
#4 P3 DC  NA  NA  NA   5   2
#5 P4 DC  NA  NA  NA  NA  NA
#6 P5 DC  NA  NA  NA  NA  NA

您可以先將df的第一行rbind放在df之上,然后用df1names覆蓋dfnames

df <- rbind(names(df), df)
names(df) <- names(df1)
df
   A  B   C   D   E   F   G
1  x  y f_1 f_2 f_3 f_4 f_5
2 P1 DC  NA  NA   1  NA  NA
3 P2 DC   1   1   7  NA  NA
4 P3 DC  NA  NA  NA   5   2
5 P4 DC  NA  NA  NA  NA  NA
6 P5 DC  NA  NA  NA  NA  NA  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM