3

我有一个数据框,其中包含巴西某些城市的医生人数(数据框 A)。我有另一个包含城市人口(全部)的数据框(数据框 B)。如何获得医生人数除以城市人口的值。请注意,我在 B 的城市比在 A 的城市多。

> A
 City Doctors 
 A          3
 C          4
 E          5
> B
 City     Pop 
 A          100
 B          20
 C          30
 D          40
 E          500
 F          10

我期待以下内容:

> Doc_divided_by_Pop
 City  Doctors_Pop
 A               3/100
 C               4/30
 E               5/500
4

2 回答 2

3

这是一种使用match基础 R 的方法 -

A$Doctors_Pop <- A$Doctors / B$Pop[match(A$City, B$City)]

另一种使用方式merge-

result <- merge(A, B, by = "City", all.x = TRUE)

result$Doctors_Pop <- result$Doctors / result$Pop
于 2019-08-27T19:09:12.753 回答
1

您也可以使用 data.table 通过“更新连接”来执行此操作

library(data.table)
setDT(A)
setDT(B)

A[B, on = .(City), Doctors_Pop := Doctors/Pop]

A
#    City Doctors Doctors_Pop
# 1:    A       3   0.0300000
# 2:    C       4   0.1333333
# 3:    E       5   0.0100000
于 2019-08-27T19:47:07.903 回答