vetor <- c(1,2,3)
data <- data.frame(id=c('a', 'b', 'a', 'c', 'a'))
我需要每個矢量值匹配到特定的ID,一個data.frame輸出,導致:
id vector1
1 a 1
2 b 2
3 a 1
4 c 3
5 a 1
vetor <- c(1,2,3)
data <- data.frame(id=c('a', 'b', 'a', 'c', 'a'))
我需要每個矢量值匹配到特定的ID,一個data.frame輸出,導致:
id vector1
1 a 1
2 b 2
3 a 1
4 c 3
5 a 1
這裏有兩種方法我經常使用類似的情況:
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")
所以你想爲每個不同的id
列添加一個唯一的整數?
這在R中被稱爲因子,並且您的id
列是1。
要轉換爲數值表示形式,使用as.numeric
:
data <- data.frame(id=c('a', 'b', 'a', 'c', 'a'))
data$vector1 <- as.numeric(data$id)
這工作,因爲data$id
不是字符串的列,但列因素。
這裏是我發現,遵循「mathematical.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
將被排序,並且標籤必須正確地遵循該順序。