【问题标题】:Dividing all columns in dataframe by column in different dataframe using unique identifier of both dfs使用两个 dfs 的唯一标识符将数据框中的所有列按不同数据框中的列划分
【发布时间】:2012-08-19 02:54:39
【问题描述】:

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

所以我有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)

有什么想法吗?

【问题讨论】:

  • 没有一些reproducible 数据和代码,很难说如何最好地做到这一点。请使用dput(head(Y)) 之类的内容相应地编辑您的问题。但是,我的猜测是您应该将人口列添加到 data.frame y 并从那里继续

标签: database r merge transform match


【解决方案1】:

由于每个国家/地区只有一个观察值,因此不需要汇总数据,只需使用 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 的人口。第二种方法不能保证国家变量的匹配,所以你必须小心使用这种方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 2021-08-25
    • 1970-01-01
    • 2021-10-01
    • 2017-01-21
    • 2023-03-08
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多