![](/img/trans.png)
[英]create a new column which is the sum of specific columns (selected by their names) in dplyr
[英]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,X2
和X3
,僅從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.