替换R中的data.frames

时间:2015-10-12 09:12:20

标签: r dataframe

我有2个数据帧

df1 #This one is in fact the mapping file (300 rows)
Sample_title        Sample_geo_accession
EC2003090503AA                 GSM118720
EC2003090502AA                 GSM118721
EC2003090504AA                 GSM118722

df2 #(300 rows)
cmap_name   concentration (M)   perturbation_scan_id    vehicle_scan_id3
metformin   0.00001 EC2003090503AA  EC2003090502AA
metformin   0.00001 EC2003090504AA  EC2003090502AA
metformin   0.0000001   EC2003090503AA  EC2003090502AA

我想阅读df2中的每一行,并将perturbation_scan_idvehicle_scan_id3替换为!Sample_geo_accession中的df1

最终输出将是:

df3 
cmap_name   concentration_M perturbation_scan_id    vehicle_scan_id3
metformin   0.00001         GSM118720               GSM118721
metformin   0.00001         GSM118722               GSM118721
metformin   0.0000001       GSM118720               GSM118721

1 个答案:

答案 0 :(得分:2)

一种可能的解决方案(如果您要替换其中许多列)是首先创建一个行索引并按get_sub_field('slider_bild', $taxonomy . '_' . $term_id);cmap_name和新索引“融合”数据。然后对新的concentration_M列执行单个合并(将在单个长列中包含这些列的所有值),然后将数据“解密”为宽格式。这是一个可能的value实现。请确保您拥有CRAN的最新版本。我还使您的列名称更“R友好”,因此使用

更容易
data.table

类似的library(data.table) # V 1.9.6+ temp <- melt(setDT(df2)[, indx := .I], id = c(1:2, 5))[df1, on = c(value = "Sample_title")] dcast(temp, cmap_name + concentration_M + indx ~ variable, value.var = "Sample_geo_accession") # cmap_name concentration_M indx perturbation_scan_id vehicle_scan_id3 # 1: metformin 1e-07 3 GSM118720 GSM118721 # 2: metformin 1e-05 1 GSM118720 GSM118721 # 3: metformin 1e-05 2 GSM118722 GSM118721 / dplyr实施

tidyr