将条目映射到数据框列

时间:2015-06-15 13:43:04

标签: r

说我有一个载体

vec1 <- c(4,8,2,9)

和另一个载体

vec2 <- c("One","One","One","One","Two",Two","Two","Three","Four","Four")

我希望获得一个类似于

的数据框myData
V1    V2
4     "One"
4     "One"
4     "One"
4     "One"
8     "Two"
8     "Two"
8     "Two"
2     "Three"
9     "Four"
9     "Four"

这意味着myData具有长度(vec2)行。如果它有帮助:vec2中的数据总是排列在一个块中 - 例如&#34;一个&#34;永远不会出现在1:4的其他行中。有没有办法实现这个目标?

谢谢

1 个答案:

答案 0 :(得分:5)

您可以尝试使用match

data.frame(V1=vec1[match(vec2, unique(vec2))], V2=vec2, stringsAsFactors=F)

   # V1    V2
# 1   4   One
# 2   4   One
# 3   4   One
# 4   4   One
# 5   8   Two
# 6   8   Two
# 7   8   Two
# 8   2 Three
# 9   9  Four
# 10  9  Four

使用rle的另一个选项,感谢@DavidArenburg:

data.frame(V1=rep(vec1, rle(vec2)$lengths), V2=vec2, stringsAsFactors=F)