如何在 R 資料框中將字串轉換為唯一的整數?


要將 R 資料框中的字串轉換為唯一的整數,我們首先需要提取資料框中的唯一字串,然後使用 as.numeric 和 factor 函式在 data.frame 函式內讀取它們。

檢視下面的示例以瞭解其工作原理。

示例 1

考慮以下資料框 -

x1<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
x2<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
x3<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
df1

建立了以下資料框

       x1      x2      x3
1     Hot  Normal     Hot
2     Hot     Hot  Normal
3     Hot  Normal     Hot
4     Hot    Cold  Normal
5     Hot    Cold     Hot
6     Hot     Hot    Cold
7     Hot    Cold    Cold
8  Normal    Cold    Cold
9     Hot  Normal    Cold
10    Hot     Hot     Hot
11 Normal  Normal     Hot
12 Normal  Normal  Normal
13    Hot     Hot    Cold
14 Normal    Cold    Cold
15    Hot     Hot     Hot
16   Cold     Hot  Normal
17    Hot     Hot     Hot
18    Hot     Hot    Cold
19    Hot    Cold    Cold
20   Cold     Hot     Hot

要在上面建立的資料框上提取資料框 df1 中的唯一值,請將以下程式碼新增到上面的程式碼段中 -

x1<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
x2<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
x3<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
Unique_df1<-
unique(c(as.character(df1$x1),as.character(df1$x2),as.character(df1$x3)))
Unique_df1

輸出

如果您將上面給出的所有程式碼段作為單個程式執行,它將生成以下輸出 -

[1] "Hot" "Normal" "Cold"

要在上面建立的資料框上將 df1 中的字串值轉換為唯一數值,請將以下程式碼新增到上面的程式碼段中 -

x1<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
x2<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
x3<-sample(c("Hot","Normal","Cold"),20,replace=TRUE)
df1<-data.frame(x1,x2,x3)
Unique_df1<-
unique(c(as.character(df1$x1),as.character(df1$x2),as.character(df1$x3)))
df1<-
data.frame(x1=as.numeric(factor(df1$x1,levels=Unique_df1)),x2=as.numeric(factor
(df1$x2,levels=Unique_df1)),x3=as.numeric(factor(df1$x3,levels=Unique_df1)))
df1

輸出

如果您將上面給出的所有程式碼段作為單個程式執行,它將生成以下輸出 -

  x1 x2 x3
1  1 2 1
2  1 1 2
3  1 2 1
4  1 3 2
5  1 3 1
6  1 1 3
7  1 3 3
8  2 3 3
9  1 2 3
10 1 1 1
11 2 2 1
12 2 2 2
13 1 1 3
14 2 3 3
15 1 1 1
16 3 1 2
17 1 1 1
18 1 1 3
19 1 3 3
20 3 1 1

示例 2

以下程式碼段建立一個示例資料框 -

y1<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
y2<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
y3<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
df2

建立了以下資料框

       y1     y2     y3
1   Rainy Winter  Rainy
2  Summer  Rainy Summer
3  Summer Spring Summer
4  Summer Spring Winter
5  Winter Winter  Rainy
6  Summer Rainy  Winter
7  Winter Winter  Rainy
8  Winter Summer Spring
9  Spring Summer Winter
10 Summer Summer Spring
11  Rainy  Rainy Spring
12  Rainy Winter Summer
13 Summer Spring Spring
14 Summer Summer Winter
15 Spring Spring Winter
16 Spring Spring Spring
17 Winter Spring Spring
18 Winter  Rainy Summer
19 Winter Spring Winter
20 Winter Summer Summer

要在上面建立的資料框上提取資料框 df2 中的唯一值,請將以下程式碼新增到上面的程式碼段中 -

y1<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
y2<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
y3<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
Unique_df2<-
unique(c(as.character(df2$y1),as.character(df2$y2),as.character(df2$y3)))
Unique_df2

輸出

如果您將上面給出的所有程式碼段作為單個程式執行,它將生成以下輸出 -

[1] "Rainy" "Summer" "Winter" "Spring"

要在上面建立的資料框上將 df2 中的字串值轉換為唯一數值,請將以下程式碼新增到上面的程式碼段中 -

y1<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
y2<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
y3<-sample(c("Summer","Rainy","Winter","Spring"),20,replace=TRUE)
df2<-data.frame(y1,y2,y3)
Unique_df2<-
unique(c(as.character(df2$y1),as.character(df2$y2),as.character(df2$y3)))
df2<-
data.frame(y1=as.numeric(factor(df2$y1,levels=Unique_df2)),y2=as.numeric(factor
(df2$y2,levels=Unique_df2)),y3=as.numeric(factor(df2$y3,levels=Unique_df2)))
df2

輸出

如果您將上面給出的所有程式碼段作為單個程式執行,它將生成以下輸出 -

  y1 y2 y3
1  1 3 1
2  2 1 2
3  2 4 2
4  2 4 3
5  3 3 1
6  2 1 3
7  3 3 1
8  3 2 4
9  4 2 3
10 2 2 4
11 1 1 4
12 1 3 2
13 2 4 4
14 2 2 3
15 4 4 3
16 4 4 4
17 3 4 4
18 3 1 2
19 3 4 3
20 3 2 2

更新於: 2021-10-28

1K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.