如何在 R 数据框列中随机替换值?


可以使用 `sample` 函数结合 `nrow` 函数和单方括号子集来随机替换 R 数据框列中的值。

例如,如果我们有一个名为 `df` 的数据框,它包含一个名为 `X` 的列,并且我们想用 1.5 随机替换 `X` 中的 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

要在上面创建的数据框中用 0 随机替换 `x` 中的 10 个值,请将以下代码添加到上述代码片段中:

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

要在上面创建的数据框中用 1 随机替换 `y` 中的 15 个值,请将以下代码添加到上述代码片段中:

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

更新于:2021年11月10日

2K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.