繁体   English   中英

如何在R中读取多个csv文件期间将数据添加为列?

[英]How to add data as column during read multi csv files in R?

我有许多csv文件,并且正在尝试通过“ data.table”读取。 csv文件的结构相同(第3列)。

我的目标是在一个主要数据框中读取所有csv文件! 每个csv文件应添加为列而不是行。

例如:

我的主要DF结构应为:

 Name     Name2        csv_file_name_1      csv_file_name_2 .......

现在,我要做的是:读取新的csv文件(我仅读取第3列),然后将其作为列添加到DF。

例如,如果我有30个csv文件,则必须阅读所有文件并在主数据帧中添加第3列作为新列。 (最终DF应该有30列)

我写了一些代码,我可以读取文件并获取文件名,并且一切正常。

files = list.files(path = path, pattern=".*csv")
for (i in 1:length(files)) assign(str_sub(files[i],11,-5), 
                              fread(files[i],colClasses = c("NULL", "NULL", NA)))

但是如何将列添加到主DF? “分配”正在创建新的数据框!

您可能可以使用cbind()实现此cbind() ,该功能可以将您读取的每个新数据帧绑定到现有数据帧。 我说是可能的,因为这只有在您希望读取的每个CSV文件具有相同的行数时才有意义。 您应该清楚为什么这是必要条件。 考虑到这一警告,下面是一个代码段,该代码段读取两个CSV文件以提供所需的输出类型:

df     <- read.csv(file="path/to/file1.csv", sep=",", header=TRUE)
df_new <- read.csv(file="path/to/file2.csv", sep=",", header=TRUE)

# this next is required only if you need to change the column names in each
# subsequent file to something else
names(df_new) <- c("Name2", "csv_file_name2", "other_column2")

df <- cbind(df, df_new)

你尝试过cbind吗?

理想情况下,每个CSV表都有一个唯一的标识符,该标识符可让您按该标识符进行合并。

cbind说明,请使用cbind小心确保每个data.frame中的行对应于同一观察值(即df1中的第一行与df2中的第一行具有相同的观察力)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM