r - 在 R 中的列上应用变异
问题描述
我有一些缺失的数据,我试图将它们归结为每列的平均值。我的代码,
apply(train_new, 2, function(x)
mutate(
ifelse(is.na(x) | x < 0, mean(x), x)
)
)
旨在一举将所有 17 列归为每列的平均值,但这会返回Error during wrapup: no applicable method for 'mutate_' applied to an object of class "c('double', 'numeric')"
,并引导我进入调试屏幕。我确定这只是一个语法问题,但我不知道它在哪里。
样本数据:
structure(list(INDEX = c(1, 2, 3, 4, 5, 6), TARGET_WINS = c(39,
70, 86, 70, 82, 75), TEAM_BATTING_H = c(1445, 1339, 1377, 1387,
1297, 1279), TEAM_BATTING_2B = c(194, 219, 232, 209, 186, 200
), TEAM_BATTING_3B = c(39, 22, 35, 38, 27, 36), TEAM_BATTING_HR = c(13,
190, 137, 96, 102, 92), TEAM_BATTING_BB = c(457.7607, 685, 602,
451, 472, 443), TEAM_BATTING_SO = c(842, 1075, 917, 922, 920,
973), TEAM_BASERUN_SB = c(97.288, 37, 46, 43, 49, 107), TEAM_BASERUN_CS = c(NA,
28, 27, 30, 39, 59), TEAM_PITCHING_H = c(NA, 1347, 1377, 1396,
1297, 1279), TEAM_PITCHING_HR = c(84, 191, 137, 97, 102, 92),
TEAM_PITCHING_BB = c(530.9595, 689, 602, 454, 472, 443),
TEAM_PITCHING_SO = c(737.105, 1082, 917, 928, 920, 973),
TEAM_FIELDING_E = c(NA, 193, 175, 164, 138, 123), TEAM_FIELDING_DP = c(146.234708045,
155, 153, 156, 168, 149), TEAM_BATTING_1B = c(1199, 908,
973, 1044, 982, 951)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
解决方案
你可以试试:
library(dplyr)
train_new %>%
mutate_all(funs(ifelse(is.na(.) | . < 0, mean(., na.rm = T), .)))
推荐阅读
- node.js - 无法找出 mongo 查询
- html - 溢出的意外行为
- pytorch - 在 BERT 之上添加一个 RNN 层
- oracle - 尝试计算剩余天数时,DBMS_OUTPUT 中显示的天数带有减号
- kotlin - JVM 目标无法在 Kotlin 多平台项目中导入通用类
- matlab - Matlab上的数值积分
- bash - 在 Bash 脚本中调用 PUT API
- javascript - 单击行材料-ui DataGrid内的按钮时如何设置行数据?
- python - 清理此代码:初始化列表中的变量
- javascript - 想在 Flask 中创建一个“上传”函数,调用多个 py 函数将数据添加到数据库。需要 HTML 页面有进度条且不更改