采取一些基本数据
Aa <- c(1,1,2,3,4,4,5)
Bb <- c(3,6,1,1,2,1,4)
Cc <- 1:length(Aa)
Dd <- sample(1:10,7)
df <- data.frame(Aa,Bb,Cc,Dd)
colnames(df)[1] <- "ID"
colnames(df)[2] <- "Type"
colnames(df)[3] <- "PNR"
colnames(df)[4] <- "height"
Dd <- c(1,1,1,1,3,3,4,5)
Ee <- c(3,3,3,6,1,1,1,4)
Ff <- c(1,2,3,3,1,3,2,2)
df2 <- data.frame(Dd,Ee,Ff)
colnames(df2)[1] <- "ID"
colnames(df2)[2] <- "Type"
colnames(df2)[3] <- "Class"
我想创建df2$PNR
来调用df$PNR
中ID
和Type
相同的值。
我使用过代码:
df2$PNR <- df$PNR[match(df2$ID==df$ID & df2$Type==df$Type)]
任何指导都将被赞赏输出
df2
# ID Type Class PNR
#1 1 3 1 1
#2 1 3 2 1
#3 1 3 3 1
#4 1 6 3 2
#5 3 1 1 4
#6 3 1 3 4
#7 4 1 2 6
#8 5 4 2 7
已向merge
建议了一个解决方案,但我不想合并所有数据(即我不希望$height
中的df2
答案 0 :(得分:1)
尝试merge(df2, df, by=c("ID","Type"))
,但请先更正Cc <- 1:length(Aa)
如果要排除变量,可以在“合并”之前执行此操作,如:df$height = NULL
或在加入后执行此操作:
result = merge(df2, df, by=c("ID","Type"))
result$height=NULL
result