如何根据条件更改列表中多个数据框中的列名称?

玛丽德·韦伯

我有一个all_input包含13个数据帧的列表这些df具有不同数量的列,有时具有不同的列标题。我需要的每个df中都有6列,我需要它们都具有相同的名称,如下所示

 header_cols <- c( "tribal_name", "st_usps_cd", "scc", "description", "total_emissions", "uom" )

有些df已经具有正确的名称,有些则没有。有些具有正确名称的几列,而其余的则没有。例如,对于我需要称为“描述”的列,一个df可能具有“ pollutant_desc”,而另一个可能具有“污染物”。

有办法改变吗?我的计划是制作一个映射文件,该文件将具有当前列名的一列和目标列名的一列,例如:

current                target
pollutant_desc         description
pollutant              description
tribe                  tribal_name  
tribes                 tribal_name
tribe_name             tribal_name

但是,这可能会有问题,因为将来会添加更多的df,而它们的名称可能不会出现在映射文件中。我考虑过使用如下ifelse语句:

if ( "pollutant_desc" %in% colnames() ) {
      rename( description = pollutant_desc )
    }

但不确定如何格式化列表中多个数据框的格式,以及在存在多个不同的标头名称时的格式。有什么建议?

罗纳克·沙

如果所有数据框中都存在所需的所有6列,那么查找方法对我来说听起来不错。

这是一个使用4列的示例。

创建一个查找表和一些虚假数据

lookup_table <- data.frame(orignal_col = c('col1', 'col2', 'col3', 'col4'), 
                 new_col = c( "tribal_name", "st_usps_cd", "scc", "description"))

df1 <- data.frame(a = 1:3, col1 = 1:3, col2 = 3:5, col3 = 4:6, col4 = 2:4)
df2 <- data.frame(a = 1:3, col1 = 1:3, b = 1:3,col2 = 3:5, col3 = 4:6, col4 = 2:4)
all_input <- list(df1, df2)

all_input
#[[1]]
#  a col1 col2 col3 col4
#1 1    1    3    4    2
#2 2    2    4    5    3
#3 3    3    5    6    4

#[[2]]
#  a col1 b col2 col3 col4
#1 1    1 1    3    4    2
#2 2    2 2    4    5    3
#3 3    3 3    5    6    4

我们可以lapply在列表上使用match用来替换列名。

lapply(all_input, function(x) {
   names(x)[match(lookup_table$orignal_col, names(x))] <- lookup_table$new_col
   x
})

#[[1]]
#  a tribal_name st_usps_cd scc description
#1 1           1          3   4           2
#2 2           2          4   5           3
#3 3           3          5   6           4

#[[2]]
#  a tribal_name b st_usps_cd scc description
#1 1           1 1          3   4           2
#2 2           2 2          4   5           3
#3 3           3 3          5   6           4

请注意,除了常见的4列之外,两个数据框都具有一些其他列,但是名称仅针对4列更改,其余部分保持不变。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何根据python中的条件更改多个数据框列的数据类型?

来自分类Dev

向列表中多个数据框中的选定列名称添加列值前缀

来自分类Dev

在多个数据框中搜索相似的列名称

来自分类Dev

根据dplyr与另一个数据框的匹配来更改数据框中的列名称

来自分类Dev

如何将存储在列表中的数据框的名称放入每个数据框的列名称中?

来自分类Dev

如何使用R中的映射文件更改多个数据框中的列名?

来自分类Dev

使用 lapply 更改数据框列表中的列名称

来自分类Dev

跨列表中的多个数据框更改单列

来自分类Dev

根据列名称的多个条件提取数据框列

来自分类Dev

从单独的值列表中替换多个数据框(在列表中)列名?

来自分类Dev

在R中的多个数据框中的列名称上添加不同的后缀

来自分类Dev

更改列表中数据框的列名

来自分类Dev

根据列名称将大型数据框拆分为多个数据框

来自分类Dev

根据R中的列名称将一个数据帧拆分为多个数据帧

来自分类Dev

循环更改多个数据框的列名

来自分类Dev

使用dplyr根据列名称更改数据框中的值?

来自分类Dev

如何根据列名称中包含的字符串合并数据框中的列?

来自分类Dev

R:根据数据框中的条件聚合映射到行号的列名列表

来自分类Dev

更改数据框列表中的名称

来自分类Dev

根据Python中的多个条件,将一列从多个数据框合并到另一数据框

来自分类Dev

根据列名称中的数字选择数据框列

来自分类Dev

根据R中的列名称合并数据框

来自分类Dev

从列表中的每个数据框获取列名

来自分类Dev

R-从名称列表中循环遍历多个数据框

来自分类Dev

从字符串列表中为多个数据框指定名称

来自分类Dev

如何根据基于数据框中列名称的字典创建新列

来自分类Dev

在多索引熊猫数据框中创建列名称列表

来自分类Dev

如何根据条件用列名替换pandas数据框中的值?

来自分类Dev

根据条件合并熊猫中的两个数据框

Related 相关文章

  1. 1

    如何根据python中的条件更改多个数据框列的数据类型?

  2. 2

    向列表中多个数据框中的选定列名称添加列值前缀

  3. 3

    在多个数据框中搜索相似的列名称

  4. 4

    根据dplyr与另一个数据框的匹配来更改数据框中的列名称

  5. 5

    如何将存储在列表中的数据框的名称放入每个数据框的列名称中?

  6. 6

    如何使用R中的映射文件更改多个数据框中的列名?

  7. 7

    使用 lapply 更改数据框列表中的列名称

  8. 8

    跨列表中的多个数据框更改单列

  9. 9

    根据列名称的多个条件提取数据框列

  10. 10

    从单独的值列表中替换多个数据框(在列表中)列名?

  11. 11

    在R中的多个数据框中的列名称上添加不同的后缀

  12. 12

    更改列表中数据框的列名

  13. 13

    根据列名称将大型数据框拆分为多个数据框

  14. 14

    根据R中的列名称将一个数据帧拆分为多个数据帧

  15. 15

    循环更改多个数据框的列名

  16. 16

    使用dplyr根据列名称更改数据框中的值?

  17. 17

    如何根据列名称中包含的字符串合并数据框中的列?

  18. 18

    R:根据数据框中的条件聚合映射到行号的列名列表

  19. 19

    更改数据框列表中的名称

  20. 20

    根据Python中的多个条件,将一列从多个数据框合并到另一数据框

  21. 21

    根据列名称中的数字选择数据框列

  22. 22

    根据R中的列名称合并数据框

  23. 23

    从列表中的每个数据框获取列名

  24. 24

    R-从名称列表中循环遍历多个数据框

  25. 25

    从字符串列表中为多个数据框指定名称

  26. 26

    如何根据基于数据框中列名称的字典创建新列

  27. 27

    在多索引熊猫数据框中创建列名称列表

  28. 28

    如何根据条件用列名替换pandas数据框中的值?

  29. 29

    根据条件合并熊猫中的两个数据框

热门标签

归档