【问题标题】:how to compare the values of two data frames in r and create a new data frame as a result in R如何比较 r 中两个数据框的值并在 R 中创建一个新的数据框作为结果
【发布时间】:2019-04-09 11:05:48
【问题描述】:

我有两个数据框:

我的.data.1

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

我的.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

【问题讨论】:

  • 您的问题不清楚您想比较什么。再次检查航空公司列相同的航空公司列,不确定您要达到的目标。检查此链接,它可能会对您有所帮助,stackoverflow.com/questions/32406412/…

标签: r dataframe


【解决方案1】:

你的问题不是很清楚。试试下面的方法是否适合你:

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

【讨论】:

  • “MED”怎么样,如何计算
  • MED 表示第一个数据帧中的值是否介于第二个数据帧中的 33% 和 67% 值之间
猜你喜欢
  • 2022-11-18
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多