将一列附加到多个 csv 文件中,每行包含一个常量

Posted

技术标签:

【中文标题】将一列附加到多个 csv 文件中,每行包含一个常量【英文标题】:Appending a column to multiple csv files that contains a constant in each row 【发布时间】:2022-01-13 21:47:01 【问题描述】:

我正在尝试编写一个脚本,对包含 csv 文件列表的变量执行以下序列:

-读取每个 csv 文件

-向每个 csv 附加一列,标题为“维度类型”,其中新列中的每一行都包含第一列中标题的名称

-将第一列的标题重命名为“维度”

-合并所有的 csv 文件

-将合并后的 csv 文件导出为 excel 文件

所有 csv 文件的结构都相同,但第一列的标题除外,它是维度类型的名称

我使用 list.files 函数创建了包含 csv 文件列表的变量,并且我有一个目录,我想在其中存储存储在变量中的 excel 文件。

【问题讨论】:

我必须在我的 csv 列表中使用 lapply 和 read.csv 才能使函数正常工作。否则,您的功能将完美运行。谢谢! 下一次,您应该发布您在问题中尝试过的代码。 ***.com/questions/5963269/… 请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

这样的东西会起作用吗?因为我没有你的数据,所以我只是做了一些快速的数据集。 (编辑为包括在列表中使用它)

df1 <- data.frame(dtype1 = sample(letters, 25, replace = TRUE),
                 col1 = sample(1:10, 25, replace = TRUE),
                 col2 = sample(5000:10000, 25))

df2 <- data.frame(dtype2 = sample(letters, 25, replace = TRUE),
                  col1 = sample(1:10, 25, replace = TRUE),
                  col2 = sample(5000:10000, 25))

df.list <- list(df1,df2)

SO_function <- function(df)
  df$`Dimension Type` <- colnames(df)[1]
  colnames(df)[1] <- "Dimension"
  return(df)


# apply to list
df.list_want <- lapply(df.list, SO_function)

# or apply to individual df's
df1.want <- SO_function(df1)
df2.want <- SO_function(df2)


#> head(df1.want, 5)
#  Dimension col1 col2 Dimension Type
#1         t    7 5921         dtype1
#2         r    4 5772         dtype1
#3         d    1 6722         dtype1
#4         u    2 8750         dtype1
#5         f    2 9778         dtype1
#> head(df2.want, 5)

#  Dimension col1 col2 Dimension Type
#1         k    5 5882         dtype2
#2         c    8 6237         dtype2
#3         f    6 6484         dtype2
#4         d    4 8504         dtype2
#5         i    7 7022         dtype2

【讨论】:

以上是关于将一列附加到多个 csv 文件中,每行包含一个常量的主要内容,如果未能解决你的问题,请参考以下文章

如何在循环中附加多个熊猫数据框?

选择多个csv文件的一列,并以可识别的顺序合并到一个文件中

r - 将一个 csv 文件拆分为多个 txt 文件

将一列csv提取成逗号分隔的列表python

如何在 python 中遍历大型 CSV 文件时轻松使用内存?

如何将一列中的两列合并为日期与熊猫?