通过另一个数据框的行值对数据框进行子集

时间:2019-11-21 11:41:26

标签: r dataframe subset

我正在尝试使用从另一个数据帧中提取的数据对一个数据帧进行子集化。我的数据基本上是这样的:

PriceData

Date          AAPL   BAC   CAT    JNJ    PG    UNH   VZ
2004-04-26     
2004-04-27            Daily Prices
2004-04-28     
2004-04-29     


Companies

Date          X1     X2     X3    X4
2004-04-26   AAPL   CAT     PG    VZ
2004-04-27   AAPL   CAT     UNH   VZ
2004-04-28   AAPL   JNJ     UNH   VZ
2004-04-29   AAPL   JNJ     UNH   VZ

我已经设法按日期对Companies数据框进行了子集设置,所以我有一个数据框,其中一行包含特定日期的行情自动收录器。例如:

Tickers
Date          X1     X2    X3    X4
2004-04-28    AAPL   JNJ   UNH   VZ

我现在想做的是对PriceData数据帧进行子集处理,以便仅保留Tickers中四个股票的价格数据:

newPriceData

Date          AAPL    JNJ    UNH    VZ
2004-04-26
2004-04-27        Daily Prices
2004-04-28
2004-04-29

有人知道我可以使用什么软件包/功能来实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

Base R,data.table和dplyr解决方案。 data.table和dplyr是为数据操纵提供替代功能的软件包。我鼓励您同时研究这两种方法-每种方法都比基本R子集更加灵活和方便。您可以找到CRAN页面herehere。他们每个人都有一个小插图(教程),列为“简介”。

下面,我为每个列出了相应的命令。对于dplyr和data.table,列出的内容略有变化,对于dplyr或data.table来说可能会更自然,但它们包含从相似性到基本语法的最小转移。

columns_to_retain <- unlist(Tickers[1,-1]) # Take the first row, drop the first column, convert to plain vector.
NewPriceData <- PriceData[,columns_to_retain]

# dplyr
library(dplyr)
NewPriceData <- select(PriceData, columns_to_retain) # or names(Tickers) instead of columns_to_retain

# data.table
NewPriceData <- PriceData[,columns_to_retain, with = FALSE]