使用两个dfs的唯一标识符将数据框中的所有列除以不同数据框中的列

时间:2012-08-23 14:41:17

标签: database r merge transform match

基本上我需要做的是将我的国家变量转换为人均值,即将所有值除以国家的人口。

所以我有df

country <- c("A","B","C","D")
income <- c(10,20,30,40)
cars <- c(100,200,300,400)
df <- data.frame(country,income,cars)

我希望按dfpop$pop

划分所有列
pop <- c(1,2,3,4)

dfpop <- data.frame(country,pop)

任何想法?

1 个答案:

答案 0 :(得分:3)

由于每个国家/地区只有一个观察点,因此不需要汇总数据,只需使用df/variable进行划分

考虑到@lselzer上面指出的合并,您可以尝试:

 DF <- merge(df, dfpop)
 DF[,-c(1,4)]/DF[,4]
  income cars
1     10  100
2     10  100
3     10  100
4     10  100

但也没有使用merge

df[,-1]/pop
  income cars
1     10  100
2     10  100
3     10  100
4     10  100

使用merge的优势是匹配国家/地区名称,这将确保您将国家A的每个变量除以国家A的人口。第二种方法不能确保国家变量的匹配,因此您必须小心使用这种方法。