r - 运行数据框然后将乘数应用于 R 中的某些行
问题描述
我正在查看一个名为 combinepred 的数据框,如果该行包含某个值,则将乘数应用于同一行的某个列中的另一个值。
我认为最好的方法是通过一个 for 循环来运行数据帧,然后有一个 if 语句来检查该值是否存在,然后如果不做其他事情来在同一行中执行不同的列,则执行此操作。
例如:
数据框组合pred:
monday | Tuesday | Wednesday | Thurday | class
0.99 | 0.2643 | 0.234 | 0.22343 | Maths
0.32 | 0.2123 | 0.22 | 0.63 | Science
0.233 | 0.6423 | 0.24 | 0.73 | English
我认为代码将如下所示:
for(i in 1:nrow(combinedpred)) {
if (conbinedpred[i] %in% 'class'){
combinedpred[i,"Maths"] * 1.5
} if (conbinedpred[i] %in% 'class') {
combinedpred[i,"English"| "science"] * 1.9
} if (conbinedpred[i] %in% 'class') {
combinedpred[i,"history"] * 1.1
}
}
结果:
由于第一列中有数学,因此将 1.5 乘数应用于星期一列,但仅在该行上。我刚刚通过上面的例子意识到有点错误。
解决方案
那是你要的吗。将整行与基于 的正确乘数相乘class
。
lookupTable <- c(Maths = 1.5, Science= 1.9, English= 1.9, History = 1.1)
df1$multipl <- lookupTable[df1$class]
df1[,1:4] <- df1[,1:4] * df1$multipl
df1 <-
structure(list(monday = c(0.99, 0.32, 0.233), Tuesday = c(0.2643,
0.2123, 0.6423), Wednesday = c(0.234, 0.22, 0.24), Thurday = c(0.22343,
0.63, 0.73), class = c("Maths", "Science", "English")), row.names = c(NA,
-3L), class = "data.frame")
推荐阅读
- javascript - 嵌套提取,第二个失败 - React & GraphQL
- c# - 从格式化的字符串中删除标题
- node.js - Twilio 视频启动
- php - 减少 Ajax 实现时间/延迟?
- wordpress - do_action 的主要功能是什么?
- python - 如何使用 python 代码使用用户名、密码登录数据库?
- css - 使用 flexbox 设计布局
- ios - 影响 UIView 阴影的约束?
- angularjs - 在 mat-table 的 mat-cell 内实现 if else 条件 - Angular 5
- php - SQL-Server Select 在 PHP 上返回 null