我确信我的问题有一个相当直接的解决方案。然而,我有限的R技能让我失望了,我还没有找到合适的解决方案。
我有一个矩阵A看起来像:
year Avg_temp
1990 14.3
1991 14.6
1992 14.5
1993 14.4
1994 14.9
1995 15.1
1996 15.2
矩阵B看起来像:
year Tot_hoursofsun
1992 950
1993 960
1994 945
我想做一个VLOOKUP(或索引匹配);目标是添加一个具有太阳小时的列,以防矩阵B中存在该值矩阵A的年份。请参阅下面的所需输出:
year Avg_temp Tot_hoursofsun
1990 14.3 Not available
1991 14.6 Not available
1992 14.5 950
1993 14.4 960
1994 14.9 945
1995 15.1 Not available
1996 15.2 Not available
提前多多感谢!
答案 0 :(得分:1)
您可以使用qdapTools包中的lookup()函数来等效VLOOKUP。
假设你的矩阵(或数据帧)被称为A和B:
library(qdapTools)
A$Tot_hoursofsun <- lookup(A$year,B)
这不会在您的数据框中输入文本“不可用”,而是填充没有NA的对应值的单元格,这是R用于丢失数据的符号。
答案 1 :(得分:0)
您可以进行合并:
m<-merge(A,B,all=TRUE)
m[is.na(m)]<-"Not available"
m
year Avg_temp Tot_hoursofsun
1 1990 14.3 Not available
2 1991 14.6 Not available
3 1992 14.5 950
4 1993 14.4 960
5 1994 14.9 945
6 1995 15.1 Not available
7 1996 15.2 Not available
DATA:
A<-structure(list(year = 1990:1996, Avg_temp = c(14.3, 14.6, 14.5,
14.4, 14.9, 15.1, 15.2)), .Names = c("year", "Avg_temp"), class = "data.frame", row.names = c(NA,
-7L))
B<-structure(list(year = 1992:1994, Tot_hoursofsun = c(950L, 960L,
945L)), .Names = c("year", "Tot_hoursofsun"), class = "data.frame", row.names = c(NA,
-3L))