将数据帧中的某个元素相乘,给定该元素与R中CSV文件的文件名相同



我正在努力解决大数据问题,这涉及到两个不同的CSV文件。如果CSV1的文件名与CSV2中的某个元素匹配,我将把CSV1的每个元素乘以CSV2的那个特定元素。顺便说一下,我在用R。

让我们把这些作为数据样本:

CSV1文件名为:318

01/01/2005 00:00        0.1
01/01/2005 01:00        0.4
01/01/2005 02:00        0.5

CSV2:

hey 318 0.08
sol 497 0.22
mat 498 0.06

因此为0.1。CSV1的0.4和0.5必须乘以0.08

您可以使用list.files获取所有要应用此功能的文件名,循环遍历每个文件名,读取它,用csv2数据帧match它,并获得相应的值以相乘。

filenames <- list.files('path/of/files', full.names = TRUE, pattern = "\.csv$")
list_df <- lapply(filenames, function(x) transform(read.csv(x, header = FALSE), 
V3 = V3 * csv2$V3[match(
tools::file_path_sans_ext(basename(x)), csv2$V2)]))

这将向您返回可访问的数据帧的更新列表,如list_df[[1]]list_df[[2]]等。

其中csv2

csv2 <- structure(list(V1 = structure(c(1L, 3L, 2L), .Label = c("hey", 
"mat", "sol"), class = "factor"), V2 = c(318L, 497L, 498L), V3 = c(0.08, 
0.22, 0.06)), class = "data.frame", row.names = c(NA, -3L))

相关内容

  • 没有找到相关文章

最新更新