比较不同维度的数据框

时间:2017-03-02 08:18:04

标签: r dataframe compare

我正在尝试比较具有不同尺寸的两个时间序列数据帧。

Market_Cap

Date          Stock_A       Stock_B     Stock_C
01.01.1990    1             3           7
01.02.1990    2             4           8
01.03.1990    3             5           1
01.04.1990    4             6           2

Market_Cap_quantiles

Date          Bottom_quantile      
01.01.1990    1.4                       
01.02.1990    2.4                     
01.03.1990    1.4                     
01.04.1990    2.4                     

是否有一个优雅的解决方案,如果Market_Cap_quantile中存在股票,则检查Market_Cap的每一行,如果没有用NA替换该值。所以我最终得到这样的东西:

Bottom_Stocks

Date          Stock_A       Stock_B     Stock_C
01.01.1990    1             NA           NA
01.02.1990    2             NA           NA
01.03.1990    NA            NA           1
01.04.1990    NA            NA           2

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:0)

我们可以做到

df1[-1][df1[-1] > df2[,2]] <- NA
df1
#        Date Stock_A Stock_B Stock_C
#1 01.01.1990       1      NA      NA
#2 01.02.1990       2      NA      NA
#3 01.03.1990      NA      NA       1
#4 01.04.1990      NA      NA       2

答案 1 :(得分:0)

ifelse check和%in%应该可以完成工作。

> a <- c(1:5)
> b <- c(11:15)
> c <- c(13:17)
> df <- data.frame(a, b)
> df2 <- data.frame(a, c)

> df
  a  b
1 1 11
2 2 12
3 3 13
4 4 14
5 5 15

> df2
  a  c
1 1 13
2 2 14
3 3 15
4 4 16
5 5 17

> df[,3] <- ifelse(df[,2] %in% df2[,2], df[,2], NA)

> df
  a  b V3
1 1 11 NA
2 2 12 NA
3 3 13 13
4 4 14 14
5 5 15 15