簡體   English   中英

重命名多個數據框中的同一列

[英]Renaming the same column in multiple dataframes

我有三個帶有一個變量的數據框,但每個數據框的標簽不同。 有沒有辦法通過 position (或僅通過每個具有單個變量的數據幀)在所有三個數據幀中重命名變量,而不是單獨進行。

例如,我想將dfadfbdfc中的列重命名為“百分比”

dfa <- data.frame(x = c(45, 55))

dfb <- data.frame(y = c(60, 40))

dfc <- data.frame(z = c(30, 70))

我嘗試使用如下循環 - 為什么這不起作用?

for (i in c(dfa, dfb, dfc)) {
names(i)[1] <- "Percentage"
}

使用purrrdplyr庫:

library(purrr)
library(dplyr)

list2env(purrr::imap(list(dfa = dfa, dfb = dfb, dfc = dfc), ~ dplyr::rename(., Percentage = 1)), envir = .GlobalEnv)

或者使用管道你可以把它寫成

list(dfa = dfa, dfb = dfb, dfc = dfc) %>% 
  purrr::imap(~ dplyr::rename(., Percentage = 1)) %>%
  list2env(envir = .GlobalEnv)

這個怎么運作

  1. 如果您將數據框放入具有相同名稱的列表中(即dfa = dfa ),那么purrr::imap將在該列表上應用 function 並保留名稱。 imap的 output 將是一個列表,其中元素名稱仍然是dfa, dfb, dfc 這將在第 3 步中很有用。

  2. 映射到列表上的 function 是dplyr::rename ,您可以在位置上使用它。 這里Percentage = 1將第一列重命名為“百分比”。

  3. 最后, list2env將取消列出具有相同名稱的全局環境中的數據框。


您可以在基礎R中執行類似的操作:


# names(x)[1] <- "Percentage" renames first column
list_of_dfs <- lapply(list(dfa, dfb, dfc), function(x) { 
  names(x)[1] <- "Percentage"
  x})

names(list_of_dfs) <- c("dfa", "dfb", "dfc")
list2env(list_of_dfs, envir = .GlobalEnv)

暫無
暫無

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

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