首页 > 解决方案 > 通过与 R 中的另一个数据帧进行比较,从一个数据帧中选择数据

问题描述

基本上我有两个数据集,一个是公司级别的,一个是行业级别的。

下面的值包含两个数据集,尽管顺序可能不同。行号也不同。

date <- c(1999,2000,2001...2019)
industry <- c("communication services", "utilities", "financials")

dffirm <- c(firmID, date, industry, beta, asset_ratios)
dfindustry <- c(industry, date, mean_beta, mean_asset_ratios)

我想做的是比较两个数据集与相应行业和年份之间的 beta 和资产比率,以便我可以根据某些标准创建公司投资组合,例如:

dffirm$beta < dfind$beta & dffirm$asset_ratio > dfindustry$mean_asset_ratio

标签: r

解决方案


根据您的评论,我认为您正在寻找要比较的每个数据框的基本汇总统计信息。我认为使用tidyverse包可能会有所帮助。

已编辑

install.packages("dplyr")
install.packages("magrittr")
library("magrittr")
library("dplyr")


#some sample datasets
firm_data <- data.frame("date" = c(rep(2009,4),rep(2010,4),rep(2011,4)),
                 "firm_beta" = rnorm(12))


industry_data <- data.frame("date" = c(rep(2009,4),rep(2010,4),rep(2011,4)),
                 "industry" = rep(c("industry1","indsutry2"),6),
                 "industry_beta" = rnorm(12))


#caculate mean for column "beta" in data frame 1
industry_data2 <- industry_data %>% group_by(date) %>% 
     summarise(industry_mean_beta = mean(industry_beta))
industry_data2


#caculate mean for column "beta" in data frame 2
firm_data2 <- firm_data %>% group_by(date) %>% summarise(firm_mean_beta = mean(firm_beta))
firm_data2



dc3 <- industry_data2 %>% left_join(firm_data2) %>% 
            mutate(beta_differ = case_when(
                  industry_mean_beta > firm_mean_beta ~ "industry > firm",
                  industry_mean_beta < firm_mean_beta ~ "industry > firm",
                  industry_mean_beta == firm_mean_beta ~ "industry > firm"
            ))

推荐阅读