转置数据

时间:2014-02-15 09:55:58

标签: r duplicates

我要做的是从这样的数据配置

SAMPLE  ENTRY          Rep2
4707890 23.323366       1
4707890 23.320814       2
4712037 33.1122         1
4712037 33.1122         2
4719912 3.01136         1
4719912 3.0305          2
4719912 3.01136         3
4714257 81.5364         1
4714257 86.20892366     2

就像这样

SAMPLE  ENTRY          Rep2 1               2               3
4707890 23.323366       1   23.323366       23.320814   
4707890 23.320814       2           
4712037 33.1122         1   33.1122         33.1122 
4712037 33.1122         2           
4719912 3.01136         1   3.01136         3.0305          3.01136
4719912 3.0305          2           
4719912 3.01136         3           
4714257 81.5364         1   81.5364         86.20892366 
4714257 86.20892366     2

实质上,具有重复结果的样本(在表中通过具有相同的样本编号和连续的重复编号而确定)将其Entry值转换为与第一个复制相关联的列。复制数量可能会有所不同,但我从未见过它超过12个。

我怀疑它可以通过熔化/铸造类型的工艺完成,但到目前为止还没有任何乐趣。

谢谢。

2 个答案:

答案 0 :(得分:2)

这样的东西看起来是有效的,至少对于样本数据是这样的:

DF2 = merge(DF, reshape(DF, direction = "wide", idvar = "SAMPLE", timevar = "Rep2"))
DF2[DF2$Rep2 > 1, -(1:3)] <- NA
DF2
#   SAMPLE    ENTRY Rep2  ENTRY.1  ENTRY.2 ENTRY.3
#1 4707890 23.32337    1 23.32337 23.32081      NA
#2 4707890 23.32081    2       NA       NA      NA
#3 4712037 33.11220    1 33.11220 33.11220      NA
#4 4712037 33.11220    2       NA       NA      NA
#5 4714257 81.53640    1 81.53640 86.20892      NA
#6 4714257 86.20892    2       NA       NA      NA
#7 4719912  3.01136    1  3.01136  3.03050 3.01136
#8 4719912  3.03050    2       NA       NA      NA
#9 4719912  3.01136    3       NA       NA      NA

答案 1 :(得分:1)

Alexis_laz:我发现你提出的一个变种让我在那里:

DF2&lt; - 合并(DF,dcast(DF,value.var =“ENTRY”,SAMPLE_Rep2))。 DF2 [DF2 $ Rep2&gt; 1, - (1:3)]&lt; - NA

出于某种原因'重塑'让我感到悲伤,当我应用于多列df我试图屈服于我的意志。