如何在 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

相关文章