我有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_id
和vehicle_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
答案 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