簡體   English   中英

更改選定列的列名

[英]Change column names of selected columns

我想用數據的第一行更改列名。

我以前的帖子中的解決方案適用於該部分。

太了,在setNames函數內部,我想再添加一個級別以僅更改所選列的列名。

這是問題所在

df <- data.frame(replicate(10,sample(100,2,rep=TRUE)))

  X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
1 76 44 89 13  8 31 12 21 50  36
2 78 27 81 75 61 84  2 65 43  51

library(dplyr)
df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,]))

這使

> print(df1)
  76 44 89 13  8
1 76 44 89 13  8
2 78 27 81 75 61

好,可以! 但我想保留col名稱,例如X1,X2X3 ,僅從X4更改為最大列數

所以我嘗試

df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,X4:max(ncol(.))]))

[.data.frame (。,1,X4:max(ncol(。))))中的錯誤:找不到對象'X4'

好的,也許我需要按數字指定列的位置

df1 <- df %>%
  select(X1:X5)%>%
  setNames(as.character(.[1,4:max(ncol(.))]))

> print(df1)
  13  8 NA NA NA
1 76 44 89 13  8
2 78 27 81 75 61

正如我們在這里看到的,名稱發生了變化。 即使我使用4:max(ncol(.))指定了列位置,也從第一列開始命名

為什么會這樣呢? 任何幫助,將不勝感激!

預期的輸出。 (我也想在此setName操作之后刪除第一行)

  X1 X2 X3 13  8
1 78 27 81 75 61

這將達到目的:

require(tidyverse)

#Using your dataset
df <- data.frame(replicate(10,sample(100,2,rep=TRUE)))

df %>% 
  set_names(c(names(df)[1:3], as.character(.[1,])[4:10])) %>% 
  rownames_to_column("index") %>% 
  filter(index != 1 ) %>% 
  select(-index)

  X1 X2 X3 16 56 51 11 21 61 37
1 43 15 75 38 70 20 63 70 53 79

暫無
暫無

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

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