如何比较R中两个数据帧的值并创建一个新数据帧作为R中的结果

时间:2019-04-09 11:05:49

标签: r dataframe

我有两个数据框:

my.data.1

       AIRLINE    STORES
[1]    500        100
[2]    300        200

my.data.2

       AIRLINE   STORES
33%    50        25
67%    150       65

我想通过从my.data.1的列中获取每个值进行比较来创建一个新的数据框,并检查它是否大于或小于my.data中相应列的值或在其之间。 2

例如:

  my.data.1[1, 'AIRLINE'] < my.data.2['33%', 'AIRLINE'] = 'LOW'

  my.data.1[1, 'AIRLINE'] > my.data.2['67%', 'AIRLINE'] = 'HIGH'

  my.data.1[1, 'AIRLINE'] >= my.data.2['33%', 'AIRLINE'] && 
      my.data.1[1, 'AIRLINE'] <= my.data.2['67%', 'AIRLINE'] = 'MED'

这样我将获得看起来像这样的数据名声

       AIRLINE    STORES
[1]    HIGH        HIGH
[2]    HIGH        HIGH

1 个答案:

答案 0 :(得分:0)

您的问题不是很清楚。尝试以下方法是否适合您:

df1 <- data.frame(AIRLINE = c(500, 300),
                  STORES = c(100, 200))
df2 <- data.frame(AIRLINE = c(50, 150),
                  STORES = c(25, 65))
getScore <- function(x, y) {
  ifelse(x < y[1], "LOW",
         ifelse(x > y[2], "HIGH", "MED"))
}
df3 <- df1
df3$AIRLINE <- sapply(df1$AIRLINE, getScore, df2$AIRLINE)
df3$STORES <- sapply(df1$STORES, getScore, df2$STORES)         
df3
  AIRLINE STORES
1    HIGH   HIGH
2    HIGH   HIGH