我不只是用平均值替换 NA,而是需要用列中的最小值代替 NA,除以 2。(我们的统计学家要求我对我们的数据执行此操作 - 我不是统计学家,所以按照他们的指示(
这是我数据的一瞥:
data
Group sp.Q13813.SPTN1_HUMAN sp.O14773.TPP1_HUMAN sp.P11137.MTAP2_HUMAN
1 Premutation 10713983468 367492324 2134747097
2 Premutation 10789498495 343303410 2677825476
3 Premutation 11134883489 383589325 2132552280
4 Premutation 9723552595 269965000 2262740921
5 Premutation 11175156282 359864993 1419225650
6 Premutation 10959077349 258095035 3343267633
7 Premutation 10770809133 331554977 2763604046
8 Premutation 11098182537 344384433 2198718886
这是我到目前为止的代码,但我收到一条函数调试错误消息:
data_ <- lapply(data, function(x) replace(x, is.na(x), (min(x, na.rm = TRUE)/2)))
Message: function (x, list, values)
{
x[list] <- values
x
}
应仅对数字列应用该函数。忽略这里的第一列(Group
(,因为它不是数字。
cols <- sapply(data, is.numeric)
data[cols] <- lapply(data[cols], function(x)
replace(x, is.na(x), min(x, na.rm = TRUE)/2))
或者dplyr
我们可以使用mutate_if
它会自动选择数字列
library(dplyr)
data %>% mutate_if(is.numeric, ~replace(., is.na(.), min(., na.rm = TRUE)/2))