【发布时间】:2018-05-13 16:55:01
【问题描述】:
我有一个这样的数据框:
df <- data.frame(v11=rnorm(1), v12=rnorm(1), v21=rnorm(1), v31=rnorm(1), v41=rnorm(1), v42=rnorm(1), v43=rnorm(1))
这个数据框只有一行
df
# v11 v12 v21 v31 v41 v42 v43
# 1 -0.4425873 0.6062714 -0.3816921 0.2477926 0.1292103 0.2801346 0.4290997
某些列是对同一主题的重复观察,例如 v11 和 v12 是来自同一主题的两个观察。
v21 和 v32 只是单个观察值。 v4x 有三个观察结果。
我想将数据框重塑为如下所示:
v11 v21 v31 v41
v12 NA NA v42
NA NA NA v43
请注意,它应该包含变量的值而不是它们的名称。
我有一个指示向量来标记哪个观察是什么:
v <- c(1, 2, 1, 1, 1, 2, 3)
每个“1”标志着一个新列的开始。
我的第一个想法是自己构建每一行:
row1 <- df[, v == 1]
row2 <- df[, v == 2]
row3 <- df[, v == 3]
但这不包含 NA。 一定有更简单的方法。
注意:解决方案不必依赖于原始列名v11、v41 等,而仅依赖于向量v。
【问题讨论】:
-
这个问题没有什么不清楚的地方。