如何在 R 数据框中随机替换列中的值?
r programmingserver side programmingprogramming更新于 2025/6/24 6:22:17
R 数据框中列中的随机替换值可以借助 sample 函数、nrow 函数和单平方子集来实现。
例如,假设我们有一个名为 df 的数据框,其中包含列 X,我们想将 X 中的 5 个值随机替换为 1.5,那么我们可以使用以下命令 −
df$X[sample(nrow(df),5)]<-1.5
示例 1
以下代码片段创建了一个示例数据框 −
x<-rnorm(20) df1<-data.frame(x) df1
创建以下数据框
x 1 0.6329624 2 -0.1499087 3 1.4854089 4 -1.1517261 5 0.1337649 6 0.2561524 7 -0.5776149 8 -0.7255745 9 -0.5188515 10 -1.1959642 11 0.8444887 12 -0.4273016 13 -1.3380255 14 -0.3433049 15 -0.7926529 16 0.2302148 17 -0.3378159 18 -1.1405204 19 1.2611400 20 0.3000847
要在上面创建的数据框中随机将 x 中的 10 个值替换为 0,请将以下代码添加到上面的代码片段中 −
x<-rnorm(20) df1<-data.frame(x) df1$x[sample(nrow(df1),10)]<-0 df1
输出
如果将上述所有代码片段作为一个程序执行,则会生成以下输出 −
x 1 0.6329624 2 -0.1499087 3 0.0000000 4 -1.1517261 5 0.1337649 6 0.2561524 7 -0.5776149 8 0.0000000 9 -0.5188515 10 0.0000000 11 0.8444887 12 -0.4273016 13 0.0000000 14 0.0000000 15 0.0000000 16 0.0000000 17 0.0000000 18 0.0000000 19 1.2611400 20 0.0000000
示例 2
以下代码片段创建了一个示例数据框 −
y<-rpois(20,10) df2<-data.frame(y) df2
创建以下数据框
y 1 9 2 7 3 8 4 5 5 9 6 14 7 11 8 15 9 15 10 11 11 13 12 12 13 14 14 11 15 15 16 11 17 12 18 10 19 12 20 11
要在上面创建的数据框中将 y 中的 15 个值随机替换为 1,请将以下代码添加到上面的代码片段中 −
y<-rpois(20,10) df2<-data.frame(y) df2$y[sample(nrow(df2),15)]<-1 df2
输出
如果将上述所有代码片段作为一个程序执行,则会生成以下输出 −
y 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 14 14 1 15 15 16 11 17 12 18 1 19 1 20 11