R语言 用预定义列表中的值重命名所有列[重复]

x6yk4ghg  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(88)

此问题已在此处有答案

Applying dplyr's rename to all columns while using pipe operator(5个答案)
关闭7天前。
我觉得这应该很简单,但我找不到答案。
我有十几个包含相同字段的报告,但每个报告中的字段名称略有不同- 'total_spend'显示为'ttl_spend' / 'total_spend' / 'totl_spnd' /等。
我将它们组合成一个数据集,方法是将它们全部用bind_rows Package 起来。每个数据集都需要编辑和修复XYZ内容。对于绑定中的每个报告,在完成了我需要做的任何其他事情之后,我希望将一组标准化的名称应用于字段,然后在下一个报告中加载和绑定。
我找不到一个在tidy/dplyr链中工作的命令,该命令从列表中获取值并将其应用为新的列名。
我想做的是-

FieldList <- c('Name', 'OrderNumber', 'OrderDate', 'ShipDate', 'OrderTotal')

bind_rows(
read_csv(pathway/file1.csv) %>%
select(CustName, OrdNum, Date, Ship, Ttl) %>%
names(FieldList),
read_csv(pathway/file2.csv) %>%
select(NameCust, Order, OrdDate, ShipDt, OrdTotal) %>%
names(FieldList)) -> my_data

我尝试过使用names()、colnames()、rename()的变体,并在lapply中尝试了一些东西。我不能像上面那样让它在链内工作。我必须将每个数据集添加到R Studio,然后使用名称,然后绑定它们。我想在一个长的bind_rows命令中完成这个任务。我知道我可以使用rename(x1=x2),但对于15个数据集,我必须对每个数据集执行8次。
必须有一种方法来更新所有的名字使用一个预定义的名单内的dplyr链。
帮助.

ecfsfe2w

ecfsfe2w1#

read_csv(pathway/file1.csv) %>%
   select(CustName, OrdNum, Date, Ship, Ttl) %>%
   setNames(FieldList) %>%
   bind_rows(read_csv(pathway/file2.csv) %>%
      select(NameCust, Order, OrdDate, ShipDt, OrdTotal) %>%
      setNames(FieldList)) -> my_data

相关问题