【问题标题】:Replacing same part of multiple col names in R替换R中多个列名的相同部分
【发布时间】:2021-01-12 12:48:39
【问题描述】:

在创建了一些虚拟变量之后,R 创建了一些无用的列名:它们以“.data_”开头

a <- as.factor(c("green", "yellow", "blue"))
b <- as.factor(c("blue", "yellow", "green"))

df <- data.frame(a, b)

library(fastDummies)
dummy1 <- dummy_cols(df$a, remove_selected_columns = TRUE)
dummy2 <- dummy_cols(df$b, remove_selected_columns = TRUE)

我需要将虚拟对象重新组合到一个数据框中,那么如何将每列中的“.data_”部分替换为其所属变量的名称(例如,a_blue、a_green、a_yellow 用于 dummy1 和 b_blue, b_green, b_yellow 代表假人 2)?

我找到了 rename(),但我必须单独为每个变量使用它。有没有更自动化的方法?

编辑: 使用 dummy_cols() 后,输出是一个数据框,其中包含与您之前对该变量的类别一样多的新变量。因此,具有 3 个类别的黄色、蓝色和绿色成为一个具有 3 列的数据框,称为 .data_blue、.data_green、.data_yellow。这些新变量是二进制的。也许这有助于说明我的意思。

【问题讨论】:

  • dummy_cols 是做什么的?
  • 它将分类变量变成一个虚拟变量。所以 a 变成了一个具有 3 个二进制变量的数据框
  • @Elena 你有很多不同的数据框dummy1, ..., dummy2 还是一个包含所有变量及其所有类别的大型数据框?
  • 许多不同的。每个变量一个(我有 21 个变量)需要合并为一个。我尝试在整个数据帧上使用 dummy_cols 但结果很奇怪。如果你知道不同的方式,我很想听听。

标签: r columnname


【解决方案1】:

函数想要一次吃整个蛋糕。

cols <- c("a", "b")
dummy_cols(df[cols], remove_selected_columns=TRUE)
#   a_blue a_green a_yellow b_blue b_green b_yellow
# 1      0       1        0      1       0        0
# 2      0       0        1      0       0        1
# 3      1       0        0      0       1        0

【讨论】:

  • 使用整个df,我得到了一个带有.data_blue, .data_green, .data_yellow, .data_blue, .data_green, .data_yellow而不是a_blue, a_green, etc.的输出,就像我希望的那样。因为我的变量类别是相同的,这很混乱。
  • 另外,我刚刚检查并使用整个 df 我得到一个错误:No character or factor columns found. Please use select_columns to choose columns.
  • 你应该让其他人可以重现,阅读:stackoverflow.com/a/5963610/6574038
  • 哦,哇,你是对的。我的例子也很完美。这一点都不令人沮丧。不过,谢谢。
猜你喜欢
  • 2016-04-03
  • 2022-01-16
  • 2015-11-03
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 2017-06-23
  • 2018-08-04
相关资源
最近更新 更多