【问题标题】:Extracting columns from multiple files and plotting them [duplicate]从多个文件中提取列并绘制它们[重复]
【发布时间】:2021-01-15 11:40:12
【问题描述】:

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

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

【问题讨论】:

标签: r plot import


【解决方案1】:

如果文件之间的变量名称相同或不同,我会感到有些困惑。也就是说,您可以使用 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)

【讨论】:

    【解决方案2】:

    您可以定义要从每个文件中选择的列名。

    col_names <- c('Al+++', 'Ca++', 'Na+')
    

    假设您正在使用read.csv 读取每个文件,您可以从每个文件中选择col_names,例如:

    lapply(files, function(x) {
      data <- read.csv(x)
      data[col_names]
    }) -> result
    
    result
    

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多