繁体   English   中英

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

[英]Combine vector and data.frame matching column values and vector values

我有

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM