我有一个关于数据帧的问题,有条件地将向量插入其中
我有以下数据集:
by <- c("hjoerring","valby","hjoerring", "copenhagen", "skagen", "loekken")
borger <- c("Hans", "Jim","Tobias", "Sanne", "Kim", "Lis")
df <- data.frame(by,borger)
我现在想用城镇的邮政编码添加一个新列
邮政编码插入以下数据框:
postnumre <- c(9990, 9800, 2500, 2100, 9480)
byer <- c('skagen','hjoerring', 'valby', 'copenhagen', 'loekken')
register <- data.frame(postnumre,byer)
然后我运行代码->
df$postnr[df$by=='hjoerring'] <- register[2,1]
但是,如果我们想象将更多的观测值添加到具有唯一值的数据集中,这将很快成为繁琐的工作。
因此,我正在寻找一种自动化过程/避免重复相同代码的方法
想法?
答案 0 :(得分:0)
基于相关列的merge
merge(df, register, by.x = "by", by.y = "byer", all.x = TRUE)
根据相关列之间的match
子集适当的值
transform(df, postnr = register$postnumre[match(by, register$byer)])