首页 > 解决方案 > R:根据以前的行创建新行

问题描述

我是 R 新手,并试图根据前几行的值创建一个新行。

样本数据:

df <- data.table(Item = c("a", "b", "c", "d"),
                 "2010FY" = c(3, 5, 2, 2),
                 "2011FY" = c(5, 6, 2, 1),
                 "2012FY" = c(-1, 2, 2, 0.5))

我想创建一个新行,将第 3 行除以第 4 行。让我们将此项目称为“e”,理想情况下应该是这样的:

    Item     2010FY     2011FY     2012FY
1     a        3          5          -1
2     b        5          6           2
3     c        2          2           2
4     d        2          1          0.5
5     e        1          2           4

使用 dplyr,我的第一次尝试是:

 df <- bind_rows(df, e = df[Item %in% "c", ] / df[Item %in% "d", ])

这不起作用,因为字符不可分割(即 Item 列)。

我发现函数 mutate_if 可以工作,但只能按列。有没有办法我可以逐行做到这一点?

太感谢了。

标签: rdplyrdata.tablerow

解决方案


正如上面的评论所指出的,这有效:

rbind(df, c(Item="e", df[df$Item == "c", -1] / df[df$Item == "d", -1])) 

推荐阅读