假设某个元素与 R 中 CSV 文件的文件名相同,则乘以数据框中的某个元素
Multiplying a certain element in a dataframe, given that certain element is the same as the filename of a CSV file in R
我正在尝试解决大数据问题,这涉及到 2 个不同的 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
获取你想要应用它的所有文件名,遍历每个文件名,读取它,match
它与 csv2
数据框并得到相应的值相乘。
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)]))
这将 return 您更新了可以访问的数据帧列表,例如 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))
我正在尝试解决大数据问题,这涉及到 2 个不同的 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
获取你想要应用它的所有文件名,遍历每个文件名,读取它,match
它与 csv2
数据框并得到相应的值相乘。
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)]))
这将 return 您更新了可以访问的数据帧列表,例如 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))