R-有条件地创建新列及其内容

时间:2019-09-30 18:01:32

标签: r dataframe

我有一个关于数据帧的问题,有条件地将向量插入其中

我有以下数据集:

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]

但是,如果我们想象将更多的观测值添加到具有唯一值的数据集中,这将很快成为繁琐的工作。

因此,我正在寻找一种自动化过程/避免重复相同代码的方法

想法?

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)])