R:具有连续整数的数据帧的逐行扩展

时间:2015-11-27 10:43:55

标签: r dataframe integer

我测量了一些位置pos,例如:

library(dplyr)
set.seed(8)
data <- 
  data.frame(id=LETTERS[1:5],
            pos=c(0,round(runif(4, 1, 10),0))) %>% 
  arrange(pos)
> data
  id pos
1  A   0
2  C   3
3  B   5
4  E   7
5  D   8

如何扩展像data这样的数据框,每个可能的pos(0,1,2,..,n),其中n将是max(数据$ pos)(即8 in这个例子)。我喜欢得到的东西:

    id  pos
1   A   0
2   NA  1
3   NA  2
4   C   3
5   NA  4
6   B   5
7   NA  6
8   E   7
9   D   8

2 个答案:

答案 0 :(得分:2)

你可以通过多种方式实现这一目标,但在基础R中,一种方法是使用合并:

merge(data.frame(pos = 0:8), data, all.x = TRUE)

或者,使用dplyr,它是:

data.frame(pos = 0:8) %>% left_join(data)

答案 1 :(得分:2)

我们可以尝试

 library(data.table)
 setDT(data)[data.table(pos=0:8), on='pos']
#    id pos
#1:  A   0
#2: NA   1
#3: NA   2
#4:  C   3
#5: NA   4
#6:  B   5
#7: NA   6
#8:  E   7
#9:  D   8