首页 > 解决方案 > 在不同列中使用 R 将数据表中的零值替换为小随机数

问题描述

我有一个包含 411 行和 6 个变量的数据表,如下所示:

> head(datapp)
  TP220170823pos-42 TP220170823pos-43 TP220170823pos-44 TP220170823pos-48 TP220170823pos-49 TP220170823pos-50
1          22744.04          43727.39          25901.80          36771.81          23925.68          30524.43
2              0.00              0.00              0.00          37894.31          37103.62          33042.50
3          88752.27         139099.31          79979.00         130399.10          90345.01          90159.49
4          40225.14          72674.44          40121.52          61857.07          48736.48          46398.95
5              0.00              0.00              0.00          19587.50          10146.16          17582.49
6              0.00              0.00              0.00          54149.82          52733.90          54033.67

我想用每个变量的新随机数更改每个零值。我首先更改了每个变量的名称以使它们相似,然后使用以下代码:

names(datapp)[1:6] <- "intensity"

library(data.table)

setDT(as.data.frame(datapp))[intensity == 0, intensity := (runif(.N, 0, 1))]

但是,当我运行此代码时,它只更改第一列中的 0,而不更改其他 5。有没有办法在其他列中也用随机数更改 0?

标签: r

解决方案


推荐阅读