r - 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 可以工作,但只能按列。有没有办法我可以逐行做到这一点?
太感谢了。
解决方案
正如上面的评论所指出的,这有效:
rbind(df, c(Item="e", df[df$Item == "c", -1] / df[df$Item == "d", -1]))
推荐阅读
- google-ads-api - 从 MYSQL 查询创建多个活动
- ios - 如何在 iOS 项目中构建和使用 C 库?
- sql - SQL查询选择多列时返回值,但只选择一列时没有数据
- ios - 是否可以在离线模式下使用 NMANavigationManager?
- mysql - 如何复制另一个表的记录
- c - 如何从C中具有多个参数的函数调用单个参数?
- sql - postgresql 中仅追加登录的最新条目
- html - 屏幕在引导程序 4 上分成 3
- java - 有没有办法将一个 ArrayList 与另一个具有一对多关系的 ArrayList 关联起来?
- algorithm - 证明表达式的运行时间