【发布时间】:2014-10-27 16:03:19
【问题描述】:
我有一个像这样的数据框:
Name Position Value
a 1 0.2
a 3 0.4
a 4 0.3
b 1 0.5
b 2 0.4
b 5 0.3
c 2 0.3
c 3 0.4
c 5 0.1
d 1 0.2
d 2 0.4
d 3 0.5
我想让每个名称的 Position 始终从 1 变为 5,并将 NA 填充到 Value 中,如下所示:
Name Position Value
a 1 0.2
a 2 NA
a 3 0.4
a 4 0.3
a 5 NA
b 1 0.5
b 2 0.4
b 3 NA
b 4 NA
b 5 0.3
c 1 NA
c 2 0.3
c 3 0.4
c 4 NA
c 5 0.1
d 1 0.2
d 2 0.4
d 3 0.5
d 4 NA
d 5 NA
有没有办法做到这一点,而不用前 2 列创建一个虚拟数据框,然后使用合并进行某种外部连接?
谢谢。
【问题讨论】:
-
@Cinji18 使用
merge非常简单df1 <- expand.grid(Name=unique(df$Name), Position=1:5); merge(df1, df,all=TRUE) -
@akrun Ops...没有看到您的评论并发布了相同的答案...我已将其删除。
-
@nicola 没关系。你可以发布它。它比我的代码更紧凑,而且有点笼统。我没有发布解决方案,因为 OP 提到不使用
merge