而不是用平均值代替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))