使用R用数据table中的小随机数替换零元素
Replacing zero elements with small random number in data table using R
我有以下数据table。我需要使用 R 用小随机数替换 CPP 列中的零值。这可能是一项简单的任务,但我无法弄清楚。
我试过了,但出现错误:
cty_d <- Table1[,sum(CPP==0)]
Table1[Table1 ==0] <- runif(cty_d,min=0.0001,max=0.001)
感谢任何帮助。
Table1:
cty year CPP
25 1998 0.0
25 1999 100.2
25 2000 25.2
25 2001 535.0
25 2002 0.0
25 2003 0.0
25 2004 75.2
Output:
cty year CPP
25 1998 0.0015
25 1999 100.2
25 2000 25.2
25 2001 535.0
25 2002 0.00014
25 2003 0.0021
25 2004 75.2
尝试在更新中使用 RAND 命令?
Update MyTable set CPP=(RAND() / 100) where CPP=0
library(data.table)
setDT(Table1)[CPP == 0, CPP := runif(.N, min=0.0001, max=0.001)]
获取表 1 的子集 CPP == 0
,然后更新该子集的 CPP(:=
通过引用更新)。 .N
是 # of observations 的 data.table
语法。所以在你的例子中是 3 table,因为 CPP == 0
的子集有 3 行。
使用类似于 post 中的工作流程:
Table1$CPP[Table1$CPP==0] <- runif(sum(Table1$CPP==0),min=0.0001,max=0.001)
您只需要覆盖单个列而不是整个数据框。
我有以下数据table。我需要使用 R 用小随机数替换 CPP 列中的零值。这可能是一项简单的任务,但我无法弄清楚。
我试过了,但出现错误:
cty_d <- Table1[,sum(CPP==0)]
Table1[Table1 ==0] <- runif(cty_d,min=0.0001,max=0.001)
感谢任何帮助。
Table1:
cty year CPP
25 1998 0.0
25 1999 100.2
25 2000 25.2
25 2001 535.0
25 2002 0.0
25 2003 0.0
25 2004 75.2
Output:
cty year CPP
25 1998 0.0015
25 1999 100.2
25 2000 25.2
25 2001 535.0
25 2002 0.00014
25 2003 0.0021
25 2004 75.2
尝试在更新中使用 RAND 命令?
Update MyTable set CPP=(RAND() / 100) where CPP=0
library(data.table)
setDT(Table1)[CPP == 0, CPP := runif(.N, min=0.0001, max=0.001)]
获取表 1 的子集 CPP == 0
,然后更新该子集的 CPP(:=
通过引用更新)。 .N
是 # of observations 的 data.table
语法。所以在你的例子中是 3 table,因为 CPP == 0
的子集有 3 行。
使用类似于 post 中的工作流程:
Table1$CPP[Table1$CPP==0] <- runif(sum(Table1$CPP==0),min=0.0001,max=0.001)
您只需要覆盖单个列而不是整个数据框。