[英]How do I get rid of multiple columns with the same name in R?
我正在收集德克薩斯州各學區的 SAT 分數及其教育支出金額。 SAT 分數的數據來自按年份拆分的 csv 文件。 我想將分數合並到我的數據框中,該數據框具有教育支出金額,而無需為總計、數學分數、閱讀分數等創建多個列。
我嘗試了不同類型的連接函數, semi_join
、 full_join
、 left_join
等,但這些似乎都無法解決我遇到的問題。
temp1<-left_join(temp, sat17, by= c("District","year"))%>%
left_join(., sat16, by=c("District","year"))%>%
left_join(., sat15, by=c("District","year"))%>%
left_join(., sat14, by=c("District","year"))%>%
left_join(., sat13, by=c("District","year"))%>%
left_join(., sat12, by=c("District","year"))%>%
left_join(., sat11, by=c("District","year"))
輸出為每個連接的數據幀提供 Math.x、Math.y、Total.x、Total.y 等列。 此外,sat17 包括一個名為 ERW 的專欄,而不是 Reading,因為那一年的測試發生了變化。 我想將 ERW 分開,其余的閱讀、數學和總分排在每一列的下面。
我認為你想要做的是將它們綁定在一起......也就是說將它們“添加”到另一個之上。
嘗試:
do.call(rbind, dfs) # dfs is the list of dataframes
或使用purrr
library(purrr)
bind_rows(dfs, .id = NULL)
或者說您只想將它們綁定到 .csv 級別開始,只需將所有文件放入名為“數據”的子目錄中即可。 你可以嘗試這樣的事情:
setwd("./data/")
library(purrr)
library(tidyverse)
binded_data <- tibble(filenames = list.files()) %>%
mutate(yearly_sat = map(filenames, read_csv)) %>%
unnest()
dplyr
會自動重命名您沒有加入的任何列,並且在加入的數據集中具有匹配的列名。
在您的情況下,由於您只想加入by=c("District", "year")
,因此任何其他具有相同名稱的列都將被重命名。
起始數據集的列將.x
附加到其名稱的末尾,而左連接的列將.y
附加到其名稱的末尾。
如果您想將數學、閱讀和總計全部放在同一列中,則需要使用dplyr::bind_rows()
將數據集堆疊在一起
combined_sat <- dplyr::bind_rows(sat17, sat16, sat15, sat14, sat13, sat12, sat11)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.