首页 > 解决方案 > 从多个文件中提取列并绘制它们

问题描述

我正在运行一个生成文本文件作为输出的模型,报告了 17 个变量,不同的名称(即variable1_X.out、variable2_.out .....variable17_X.out)是X对应于指定参数的文件编号模拟,它是可变的。由于我使用的文件很少,因此我使用基本脚本从我需要的变量中提取数据并绘制数据,但是,通过改变一些模型参数,现在我正在生成可变数量的文件,因此,我的脚本不再有用,并且每次运行都更新它是不切实际的。

我设法使用lapply将我想要的所有文件导入到 R 中,但是我想知道是否有一个工具/脚本可以从我需要的每个文件中提取特定列,然后将它们完全绘制出来。问题是输出文件中列的名称顺序不是恒定的,它会从一个变量变为另一个变量。但是,大多数文件中的名称是相同的,因此应根据特定名称列表(化学物质如 Al+++、Ca++、Na+....)进行选择。R不是我的专业领域。

来自输出文件之一的列布局..

标签: rplotimport

解决方案


如果文件之间的变量名称相同或不同,我会有些困惑。也就是说,您可以使用 dplyr 从数据框中选择特定列。您也可以重命名它们。像这样(或某种组合)可能会起作用。

如果变量名不同,导入合并成一个大数据框

library(dplyr)
df1 = rio::import("df1.csv")
df2 = rio::import("df2.csv")

# first cbind the different files into one big dataframe for ease of access
df = cbind(df1, df2) 
# Gives you the columns you select
filtered_df = df %>% dplyr::select(v1,v2,v3)

如果变量的名称相同。分别导入和选择变量。

df1 = rio::import("df1.csv")
df1_select = df1 %>% select(v1,v2,v3)
    
df2 = rio::import("df2.csv")
df2_select = df2 %>% select(v1,v2,v3)
df2 %>% Rename ("v1_df2" = "v1")
df2 %>% Rename ("v2_df2" = "v1")
df2 %>% Rename ("v3_df2" = "v1")

# cbind the renamed columns
cbind(df1,df2)

推荐阅读