我有
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
答案 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
将被排序,标签必须正确遵循该顺序。