簡體   English   中英

在 R 中重命名數據框中的特定列

[英]renaming specific columns in a data frame in R

我正在嘗試更改 R 中數據框的特定列的名稱。例如,如果我有一個看起來像這樣的數據框:

df <- data.frame(
x1 = rnorm(10),
y1 = rnorm(10),
x2 = rnorm(10),
y2 = rnorm(10),
x3 = rnorm(10),
y3 = rnorm(10)
)
head(df,3)

           x1          y1         x2          y2         x3         y3
1 -1.42423743  0.21855807 -0.1456853  1.46204179  1.6474040  2.2384782
2  1.17158831 -1.41602524 -1.2891551  1.45028848 -1.2726250 -0.3331051
3 -0.21959357  0.84741665  0.2745170  0.81040227 -0.3520883 -0.3103068

我想要做的是將所有y列(即 y1, y2, y3)的名稱更改為簡單的y 因此生成的數據框將如下所示:

           x1           y         x2           y         x3          y
1 -1.42423743  0.21855807 -0.1456853  1.46204179  1.6474040  2.2384782
2  1.17158831 -1.41602524 -1.2891551  1.45028848 -1.2726250 -0.3331051
3 -0.21959357  0.84741665  0.2745170  0.81040227 -0.3520883 -0.3103068

我意識到數據框中現在有多個 y 列,但出於我的目的,這是必要的。

我不知道該怎么做,但我正在考慮遍歷 df 並更改列名……這段代碼不起作用,但我在想這樣的事情:

for(j in 1:length(df)){
  colnames(df$[j])[which(names(df$[j]) == "y[j]")] <- "y"
} 

關於我如何實現這一目標的任何建議?

不建議有多個具有相同名稱的列,但如果您仍然必須這樣做,這是一種方法

names(df)[grep("^y", names(df))] <- "y"

或無正則表達式的方法

names(df)[startsWith(names(df), "y")] <- "y"

暫無
暫無

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

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