我是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))
我想创建一个新行,将第三行除以第四行。我们将此项目称为“ 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", ])
这不起作用,因为字符不能被整除(即,“项目”列)。
我发现mutate_if函数可以工作,但只能按列工作。有什么办法可以逐行执行吗?
非常感谢您。
答案 0 :(得分:3)
如上面评论中所指出的那样,这可行:
rbind(df, c(Item="e", df[df$Item == "c", -1] / df[df$Item == "d", -1]))