合并矢量和data.frame匹配列值和矢量值

时间:2012-02-21 05:10:40

标签: r

我有

vetor <- c(1,2,3)
data <- data.frame(id=c('a', 'b', 'a', 'c', 'a'))

我需要一个data.frame输出,它将每个向量值与特定的id匹配,结果为:

  id vector1
1  a       1
2  b       2
3  a       1
4  c       3
5  a       1

3 个答案:

答案 0 :(得分:4)

以下是我经常用于类似情况的两种方法:

vetor <- c(1,2,3)
key <- data.frame(vetor=vetor, mat=c('a', 'b', 'c'))
data <- data.frame(id=c('a', 'b', 'a', 'c', 'a'))

data$vector1 <- key[match(data$id, key$mat), 'vetor']
#or with merge
merge(data, key, by.x = "id", by.y = "mat")

答案 1 :(得分:0)

所以你想为每个不同的id列提供一个唯一的整数吗?

这在R中称为因子,您的id列就是一个。

要转换为数字表示,请使用as.numeric

data <- data.frame(id=c('a', 'b', 'a', 'c', 'a'))
data$vector1 <- as.numeric(data$id)

这是有效的,因为data$id不是一列字符串,而是一列因子

答案 2 :(得分:0)

这是我在“math.coffee”提示后发现的答案:

vector1 <- c('b','a','a','c','a','a')  # 3 elements to be labeled: a, b and c
labels <- factor(vector1, labels= c('char a', 'char b', 'char c') )
data.frame(vector1, labels)

我们唯一需要注意的是,在factor(vector1,...)函数中,vector1将被排序,标签必须正确遵循该顺序。