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