根据索引位置和其他变量的值创建新变量

时间:2018-04-18 20:40:13

标签: r

我可以使用一些帮助。我需要根据数据框中变量的值是否等于另一个向量的索引值,向数据框添加一个新变量。以下是一个简化示例:

vector [2 7 15 4 5]

dataframe (4 variables; Index, Site, Quad, Count)

Index Site Quad Count
1     2    3    0
1     3    7    2
2     1    8    0
2     3    3    1
3     2    3    0
4     3    7    2
5     1    8    0
5     3    3    1

我想要创建的变量将匹配数据框中df $ Index的值与向量中的匹配位置。也就是说,当df $ Index = 1时,新变量将为2(向量中的位置1),当df $ Index = 2时,新变量将为7(向量中的位置2),当df $ Index = 3,新变量为3(向量中的位置3)。

我最终进入了一个R虫洞,并且知道解决方案很简单,但我似乎无法得到它。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

如果您的索引通常是整数索引,例如

dd<-read.table(text="Index Site Quad Count
1     2    3    0
1     3    7    2
2     1    8    0
2     3    3    1
3     2    3    0
4     3    7    2
5     1    8    0
5     3    3    1", header=TRUE)
vec <- c(2, 7, 15, 4, 5)

然后您可以使用

创建新列
dd$value <- vec[dd$Index]
dd
#   Index Site Quad Count value
# 1     1    2    3     0     2
# 2     1    3    7     2     2
# 3     2    1    8     0     7
# 4     2    3    3     1     7
# 5     3    2    3     0    15
# 6     4    3    7     2     4
# 7     5    1    8     0     5
# 8     5    3    3     1     5