R语言数据处理:从CODE列提取阶段和样本号

在数据分析中,经常需要从现有的数据列中提取信息。本文将介绍如何使用R语言,特别是dplyrtidyr包,从名为'CODE'的列中提取'阶段'和'样本号'信息。

示例场景

假设我们有五个CSV文件(data1.csv到data5.csv),需要将它们合并并提取'阶段'和'样本号'。'CODE'列的格式为'F{数字}NL{样本号}',例如'F1NL001'表示阶段1,样本号为001。

R代码示例Rlibrary(dplyr)library(tidyr)

读取五个表格data1 <- read.csv('data1.csv')data2 <- read.csv('data2.csv')data3 <- read.csv('data3.csv')data4 <- read.csv('data4.csv')data5 <- read.csv('data5.csv')

合并五个表格为长型数据long_data <- bind_rows(data1, data2, data3, data4, data5) %>% mutate(阶段 = sub('^F(\d)NL.$', '阶段\1', CODE), 样本号 = sub('^F\dNL(.)$', '\1', CODE))

合并五个表格为宽型数据wide_data <- bind_rows(data1, data2, data3, data4, data5) %>% mutate(阶段 = sub('^F(\d)NL.$', '阶段\1', CODE), 样本号 = sub('^F\dNL(.)$', '\1', CODE)) %>% pivot_wider(names_from = 阶段, values_from = c(列名1, 列名2, 列名3))

打印长型数据和宽型数据print(long_data)print(wide_data)

代码解释

  1. 加载包: 首先加载dplyrtidyr包,用于数据处理和转换。

  2. 读取数据: 使用read.csv函数读取五个CSV文件。

  3. 合并数据: 使用bind_rows函数将五个数据框合并成一个长型数据框。

  4. 提取信息: 使用mutate函数创建'阶段'和'样本号'列。sub函数利用正则表达式从'CODE'列中提取相应信息。

    • '^F(\d)NL.*$': 匹配以'F'开头,接着一个数字,然后是'NL',最后是任意字符的字符串。 (\d)捕获数字部分。 * '阶段\1': 用'阶段'加上捕获的数字替换匹配的字符串。 * '^F\dNL(.*)$': 匹配以'F'开头,接着一个数字,然后是'NL',最后是任意字符的字符串。 (.*)捕获'NL'后面的所有字符。 * '\1': 用捕获的'NL'后面的字符替换匹配的字符串。
  5. 转换为宽型数据 (可选): 如果需要将数据转换为宽型格式,可以使用pivot_wider函数。

  6. 打印数据: 使用print函数查看处理后的数据。

总结

通过以上步骤,我们成功地从'CODE'列中提取了'阶段'和'样本号'信息,并将数据整理成所需的格式。根据实际需求修改文件名、列名和正则表达式即可。

R语言数据处理:从CODE列提取阶段和样本号

原文地址: https://www.cveoy.top/t/topic/pBz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录