【问题标题】:Divide each row by a constant and create a new column将每一行除以一个常数并创建一个新列
【发布时间】:2019-12-02 15:00:00
【问题描述】:

我想创建一个名为百分比的新列并将其添加到数据框。此列应包含除以常数 13197 并乘以 100 的每一行。有人可以帮忙完成这项任务吗?

这是我的数据框的头部。

   Var1 Freq
1 01085    6
2 01602   34
3 01845   31
4 03824    1
5 04011   16
6 04102    2

【问题讨论】:

  • 欢迎来到stackoverflow @Amy。在寻求帮助之前,您应该付出一些努力来解决您的问题。这就是它在stackoverflow上的工作方式,您将能够获得很好的帮助。

标签: r divide


【解决方案1】:

最简单的方法是使用dplyr

library(dplyr)

df <- mutate(df, perc = Freq/sum(Freq) * 100) 

这将避免您必须除以一个常数(而是除以名为“Freq”的列的总和)。

如果你想要这个常量,代码是:

df <- mutate(df, perc = Freq/13197 * 100) 

当然,您可以在 base R 中使用

,而不是使用包
df$perc = df$Freq/13197 * 100) 

【讨论】:

  • 非常感谢!我实际上需要常量。
【解决方案2】:

df$percent &lt;- 100*df$freq/13197

【讨论】:

  • 谢谢!我收到此错误 $&lt;-.data.frame(*tmp*, percent, value = numeric(0)) 中的错误:替换有 0 行,数据有 241
  • 我认为问题在于您的数据列名称是Freq,大写F,而这个答案使用freq,小写f。您需要调整代码以使用您的实际列名。
【解决方案3】:
df$percentage <-   (df$Var1) * (df$Freq) * (100) / (13197)

您可以直接引用新列并以这种方式分配它。我假设您需要将 (df$Var1) 乘以它的频率。

【讨论】:

  • 非常感谢!问题解决了!但是没有必要乘以 Var1。这非常容易:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多