【问题标题】:division between values in dataframes数据框中的值之间的划分
【发布时间】:2015-11-17 04:29:51
【问题描述】:

我有两个数据框(csv 表),每个都有相同的行数(30,000 行)和 50 列。我想将所有单元格中的df1 除以df2,方法是将行名视为常见。

例如:

df1

rs sample1 sample1 sample2 sample3 .... sample50

tp1  3        5         7      17       25
tp10  10      25        47     37       45
tp25  110     125       147     370     145

df2

rs sample1 sample1 sample2 sample3 .... sample50

tp1  30        25         7      170      125
tp10  40      125        147     327      145
tp25  210     425       170     570     1457

我想使用 R 中常见的 rs 来计算这些数据帧之间的每个单元格值。我尝试了以下方法:

df3 <- df1$sample1 / df2$sample2[ match( df1$rs , df2$rs ) ]

但它打印出没有行名的值。

我的问题是,如何打印保留行名的所有列的值?

【问题讨论】:

  • 在行数和列数相同的情况下,当您说“按列划分...所有单元格”时,“按列”是什么意思。为什么不只是df3 = df1 / df2?如果您的行名实际上是一列(看起来就是这样,因为它们有一个标题)然后df3 = df1[, -1] / df2[, -1],然后df3$rs = df1$rs
  • 由于某种原因,它看起来不像一个简单的除法,因为它不断抛出错误消息。但是,如果我不分配给数据框而只是执行 df1/df2,似乎它会输出一些结果而不输出常见的行名
  • 它可以工作,但没有引用 ist 列。我希望看到第一列带有这些参考名称,以便输出行。谢谢。

标签: r dataframe division


【解决方案1】:

按照 Gregor 的建议进行划分: df3=df1/df2。第一列将全部变为 NA,因为它是您的 df 中的因素。要更正它,只需从 df1 复制第一列。 df3$rs&lt;-df1$rs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2021-06-11
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多