[英]Renaming the same column in multiple dataframes
我有三個帶有一個變量的數據框,但每個數據框的標簽不同。 有沒有辦法通過 position (或僅通過每個具有單個變量的數據幀)在所有三個數據幀中重命名變量,而不是單獨進行。
例如,我想將dfa
、 dfb
、 dfc
中的列重命名為“百分比”
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"
}
使用purrr
和dplyr
庫:
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)
這個怎么運作
如果您將數據框放入具有相同名稱的列表中(即dfa = dfa
),那么purrr::imap
將在該列表上應用 function 並保留名稱。 imap
的 output 將是一個列表,其中元素名稱仍然是dfa, dfb, dfc
。 這將在第 3 步中很有用。
映射到列表上的 function 是dplyr::rename
,您可以在位置上使用它。 這里Percentage = 1
將第一列重命名為“百分比”。
最后, 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.