【问题标题】:How to do a calculation using order of columns如何使用列的顺序进行计算
【发布时间】:2017-07-11 20:50:28
【问题描述】:

我正在尝试添加一个额外的列,该列使用数据框中的 2 列显示百分比变化。

例如,假设我的数据框有 13 列,每列 2 行。和行值都是数字。我试图提出第 14 列,其结果来自使用第 13 列和第 12 列的计算。

这行得通吗?

df$additionalcolumn <- (df[,13] - df[,12]) / df[,12]

【问题讨论】:

  • 你试过了吗?结果符合你的预期吗?
  • 我在尝试下面的人回答的代码时发现了另一个问题。计算不起作用的原因是数据采用“因子”格式。我不知何故需要将格式更改为数值。有什么想法吗?
  • 使用as.character() 转换为字符串,然后使用as.numeric() 转换为数字。但是,我建议改为查看您的数据源以及如何将这些数据读入 R 以确保它是正确的。您可能会发现 readr 包很有帮助,因为它的读取函数更加冗长。

标签: r


【解决方案1】:

我运行了这个示例代码,它运行良好。试试看

test = data.frame(a=seq(1,10), b=seq(10,19))
test$c = test[,1] + test[,2]
print(test)

输出

    a  b  c
1   1 10 11
2   2 11 13
3   3 12 15
4   4 13 17
5   5 14 19
6   6 15 21
7   7 16 23
8   8 17 25
9   9 18 27
10 10 19 29

【讨论】:

  • 我在尝试上面的代码时发现了另一个问题。计算不起作用的原因是数据采用“因子”格式。我不知何故需要将格式更改为数值。有什么想法吗?
  • 你可以做test$b = as.numeric(as.character(test$b))。这会将您的因子转换为数字。
【解决方案2】:

或通过data.table:

library(data.table) # load the necessary packages
test = data.table(a=seq(1,10), b=seq(10,19)) #create the data.table
test[,c:=a+b]#create a new column named c and fill it with the sum of a and b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    相关资源
    最近更新 更多