【发布时间】:2017-05-04 15:06:32
【问题描述】:
到目前为止,我还没有找到解决方案......这个最接近:1
这是我的数据框的一小部分,df:
ANIMAL(chr) MARKER(int) GENOTYPE(int)
"1012828" 1550978 0
"1012828" 1550982 2
"1012828" 1550985 1
"1012830" 1550982 0
"1012830" 1550985 2
"1012830" 1550989 2
而我想要的是这个……
ANIMAL MARKER_1550978 MARKER_1550982 MARKER_1550985 MARKER_1550989
"1012828" 0 2 1 NA
"1012830" NA 0 2 2
我的想法,最初是根据引用的问题为每个标记创建列
markers <- unique(df$MARKER)
df[,markers] <- NA
因为我不能在 R 中使用整数作为列名。我在每个新列中添加了“MARKER_”以便它可以工作:
df$MARKER <- paste("MARKER_",df$MARKER)
markers <- unique(df$MARKER)
df[,markers] <- NA
现在我有了所有新列,但行数相同。删除不必要的行和列没有问题,但是我将如何正确地用 MARKER 和 ANIMAL 的正确 GENOTYPE 填充我的新列?我猜测其中的一个或多个:索引、匹配、%in% ......但不知道从哪里开始。在 stackoverflow 中搜索这些并没有产生任何与我的挑战相关的内容。
【问题讨论】:
-
您希望将数据框从窄到宽展开。查看
tidyr::spread -
特别是
tidyr::spread(df, MARKER, GENOTYPE)
标签: r