删除数据框中不在另一个数据框中的列

时间:2017-08-14 15:25:07

标签: r dataframe

我遇到了与两个数据框中的数据匹配的问题。我有一个数据框架与股票价格和另一个与公司收入。但是,两个数据框架中的公司并不完全相同。这是我正在处理的一个可重复的例子:

AAPL <- c(50,55,75,40,60)
MSFT <- c(80,65,70,75,80)
GE <- c(20,25,30,25,35)
Prices <- data.frame(AAPL,MSFT,GE)

AAPL <- c(100,110,120,110,100)
MSFT <- c(200,185,195,170,180)
PFE <- c(80,70,80,75,75)
Revenues <- data.frame(AAPL,MSFT,PFE)

我希望在两个数据框架中为公司的价格/收入比率设置一个新数据框。它看起来像这样。

AAPL.ps <- c(0.5,0.5,0.625,0.364, 0.6)
MSFT.ps <- c(0.4,0.351,0.359,0.441,0.444)
price.sales <- data.frame (AAPL.ps,MSFT.ps)

我是R的新人,并且一直在努力解决这个问题。

有关如何做到这一点的任何见解?

提前谢谢

1 个答案:

答案 0 :(得分:3)

你可以这样做......

common <- intersect(names(Prices),names(Revenues)) #common column names

price.sales <- Prices[,common]/Revenues[,common] #just use those columns

price.sales
       AAPL      MSFT
1 0.5000000 0.4000000
2 0.5000000 0.3513514
3 0.6250000 0.3589744
4 0.3636364 0.4411765
5 0.6000000 0.4444444