在R语言中为42个数据集添加唯一ID列并标记
为42个数据集批量添加唯一ID列
你有42个数据集,需要为每个数据集添加对应唯一ID(ID1至ID42),以下是两种高效的批量处理方案:
方法一:基础R实现
适合习惯使用基础R语法的场景,无需额外安装工具包:
- 将所有数据集存入列表:假设你的数据集命名为
df1、df2……df42,用mget快速批量获取:
# 批量读取数据集到列表 data_list <- mget(paste0("df", 1:42))
- 批量添加ID列:用
Map函数为每个数据集匹配对应ID值:
# 为每个数据集添加唯一ID列 data_list_with_id <- Map(function(df, id_num) { df$ID <- paste0("ID", id_num) df }, data_list, 1:42)
- 可选:将处理后的数据集导出回全局环境:
# 把带ID的数据集放回全局环境 list2env(data_list_with_id, .GlobalEnv)
方法二:tidyverse工具包实现
如果你常用tidyverse生态,用purrr包的map2函数可以更简洁地完成操作:
# 加载tidyverse(若未安装先执行install.packages("tidyverse")) library(tidyverse) # 批量读取数据集到列表 data_list <- mget(paste0("df", 1:42)) # 批量添加ID列 data_list_with_id <- map2(data_list, 1:42, ~ mutate(.x, ID = paste0("ID", .y))) # 可选:导出到全局环境 list2env(data_list_with_id, .GlobalEnv)
验证示例
用你提供的示例数据集测试单数据集添加ID的效果:
# 示例数据集 example_df <- structure(list(X = 1:5, x1.time = c("00:00:00", "00:01:00", "00:02:00", "00:03:00", "00:04:00"), x1.AI_mean = c(0.323351574525762, 0.284159071937747, 0.239749146757921, 0.230766586001914, 0.244456920325771), x1.MAD_mean = c(0.00341506508299082, 0.00302928679541095, 0.00278424196850715, 0.00269385572703841, 0.00270493856606347), x1.SD_mean = c(0.00477593690534784, 0.00405971881709533, 0.00354415353173061, 0.00350825365755234, 0.00361817148789133 ), x1.ENMO_t_mean = c(0.0239268821264327, 0.0237063614378219, 0.0237014797190142, 0.0239896011495783, 0.0243401417506231), x2.AI_mean = c(0.294080313622427, 0.477944468152524, 0.260808829802468, 0.456214057286552, 0.84614872784907), x2.MAD_mean = c(0.00263194956522427, 0.00393549027910995, 0.00242397010624937, 0.00473452632379309, 0.00967936115719858), x2.SD_mean = c(0.00620183543213348, 0.00897436349787661, 0.00376656976842411, 0.0102128144373202, 0.026857971881988), x2.ENMO_t_mean = c(0.0152786778953128, 0.0134201176591068, 0.0105504453766938, 0.0126154127095435, 0.0194672090503613), x3.AI_mean = c(0.0735792814229227, 0.0514050450635112, 0.105131723525748, 0.128627572902289, 0.402271889323791), x3.MAD_mean = c(0.00139436591181368, 0.000712147674432812, 0.00119105634569394, 0.00119348650394604, 0.00356665669204264 ), x3.SD_mean = c(0.00199624824940588, 0.00120092927705721, 0.00193145315212752, 0.0019283335835232, 0.00656874765265735 ), x3.ENMO_t_mean = c(0.0139865818700652, 0.0139851935882149, 0.0139915889947178, 0.01398633901765, 0.0144706584272194), x4.AI_mean = c(0.0156678651943813, 0.0486531274165618, 0.033482857018396, 0.0377258494079243, 0.0678175492814511), x4.MAD_mean = c(0.000251120428854605, 0.000562880039987649, 0.000528793978359871, 0.00124991974998928, 0.000757489838974229), x4.SD_mean = c(0.000533766751727111, 0.00134959539056406, 0.000857977081466285, 0.00213180063264727, 0.00127973763932144), x4.ENMO_t_mean = c(0.0207155829098077, 0.020761171880961, 0.0207540203103165, 0.0202677052046802, 0.0198891636700763), x5.AI_mean = c(0.117604774640621, 0.0670305430061501, 0.0341376355863943, 0.13364297618809, 0.306972659040445), x5.MAD_mean = c(0.0014759342409207, 0.000989910934380608, 0.000403358793801372, 0.00146211525459881, 0.00279101071524453 ), x5.SD_mean = c(0.00332215932515048, 0.00195612286464375, 0.00100728633289468, 0.00269074473283573, 0.00460104621279968 ), x5.ENMO_t_mean = c(0.0154521138471442, 0.0154613646883262, 0.0154478187295753, 0.0157331526286594, 0.0158523807067694 ), x6.AI_mean = c(0.100509771506111, 0.0758254065303984, 0.116304451335499, 0.128055772822219, 0.121857857811461), x6.MAD_mean = c(0.000820743353091489, 0.000853723738604472, 0.00106905689779995, 0.00125348246046243, 0.00132633070226373 ), x6.SD_mean = c(0.00122240006684591, 0.00122098986196308, 0.00200131128161969, 0.00174469241955932, 0.00180918568232773 ), x6.ENMO_t_mean = c(0.0105689413754299, 0.0104679319373477, 0.0106510201902777, 0.0105852542321717, 0.0110441830680727 ), x7.AI_mean = c(0.0286478750449268, 0.0515922904718244, 0.0711332148199368, 0.05020475938917, 0.0830762493042348), x7.MAD_mean = c(0.000363376272209463, 0.000480238540942994, 0.000628916162718124, 0.000594606941057317, 0.000878481811277494 ), x7.SD_mean = c(0.000583562490557928, 0.000759472323982701, 0.00117176811747496, 0.00112513562674996, 0.00137098279570074 ), x7.ENMO_t_mean = c(0.0179026688120152, 0.0178767746038774, 0.0174193867673969, 0.0172732431081777, 0.0173507218269879 )), row.names = c(NA, 5L), class = "data.frame") # 为示例数据集添加ID1列 example_df$ID <- "ID1" # 查看前几行结果 head(example_df)
内容的提问来源于stack exchange,提问作者Data miner123
相关产品推荐
相关产品推荐

