gpt4 book ai didi

重命名 R 中数据框中的特定列

转载 作者:行者123 更新时间:2023-12-04 12:15:18 28 4
gpt4 key购买 nike

我正在尝试更改 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"

关于重命名 R 中数据框中的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59131873/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com