我有一個關于二進制變數的問題。正如你在照片中看到的,我有一個由 4 個類別組成的序數變數,在這個變數上,我需要在機器學習中應用分類演算法。我怎樣才能使這個變數成為二進制變數,你能幫我在 R 中撰寫必要的代碼嗎?
str(所屬) dbl lbl [1:2993] 1, 1, 1, 4, 1, 3, 2, 2, 3, 3, 2, 2, 3, 1, 2, 2, 1, 2, 4, 1, 3, 2, 1, 2, 1, 4, 1, 2, 1, 1, 3, 1, 3,... @ label : chr "GEN\AGREE\BELONG AT SCHOOL" @ format.spss: chr “F1.0”@標簽:命名為 num [1:5] 1 2 3 4 9 ..- attr(*, "names")= chr [1:5] “非常同意” “有點同意” “不同意有點” “非常不同意” ...
變數的級別:“非常同意”、“有點同意”、“非常不同意”、“有點不同意”,我想把這些變成“同意”和“不同意”,然后我想標記同意為 1,不同意為 0。
uj5u.com熱心網友回復:
樣本資料
# A tibble: 15 x 2
id result
<int> <chr>
1 1 agree a little
2 2 agree a lot
3 3 agree a lot
4 4 agree a lot
5 5 agree a lot
6 6 agree a lot
7 7 disagree alot
8 8 agree a little
9 9 disagree alot
10 10 disagree alot
11 11 disagree alot
12 12 agree a lot
13 13 agree a little
14 14 agree a lot
15 15 disagree a little
disagree檢測到時改為result0
library(tidyverse)
df %>%
mutate(result = case_when(str_detect(result, "disagree") ~ 0,
TRUE ~ 1) %>%
as_factor)
# A tibble: 15 x 2
id result
<int> <fct>
1 1 1
2 2 1
3 3 1
4 4 1
5 5 1
6 6 1
7 7 0
8 8 1
9 9 0
10 10 0
11 11 0
12 12 1
13 13 1
14 14 1
15 15 0
uj5u.com熱心網友回復:
非常感謝您的快速回復。我的意思是,我如何將 4 個類別的序數變數轉換為二進制變數?我想將標簽分組同意一點并且同意很多“同意”。我在這里復制變數的結構。在這種情況下,我應該使用您提到的代碼嗎?
str(所屬) dbl lbl [1:2993] 1, 1, 1, 4, 1, 3, 2, 2, 3, 3, 2, 2, 3, 1, 2, 2, 1, 2, 4, 1, 3, 2, 1, 2, 1, 4, 1, 2, 1, 1, 3, 1, 3,... @ label : chr "GEN\AGREE\BELONG AT SCHOOL" @ format.spss: chr “F1.0”@標簽:命名為 num [1:5] 1 2 3 4 9 ..- attr(*, "names")= chr [1:5] “非常同意” “有點同意” “不同意有點”“非常不同意”。
uj5u.com熱心網友回復:
由于您沒有撰寫可重現的示例,因此在這里您有一個“模擬”資料,以便制作您所要求的內容:
# 1. GENERATE RANDOM VALUES FOR THE 4 DIFFERENT CATEGORIES
# 1.1 Different values
values <- c("agree a lot", "agree a little", "disagree a lot", "disagree a little")
# 1.2 Fix a seed [to make reproducible]
set.seed(12345)
# 1.2 Generate VAR
VAR <- sample(values, size = 100, replace = T)
# 1.3 Visualize the result
table(VAR)
# 2. REPLACE THE VALUES TO "AGREE" AND "DISAGREE"
VAR2 <- factor(VAR, labels = c("AGREE", "AGREE", "DISAGREE", "DISAGREE"))
# 2.1 Visualize the result
table(VAR2)
為了更好地理解我們在做什么:重要的是要考慮到當你分解一個變數時,R 按字母順序排列它的級別;在這種情況下"agree a little", "agree a lot" "disagree a little", "disagree a lot"。因此,上面寫的標簽對應于這些級別,這就是為什么有兩個“同意”,然后是兩個“不同意”。
如果你想要一個數字變數,你必須改變前面的代碼是回應:
VAR2 <- factor(VAR, labels = c(1,1,0,0))
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/529439.html
標籤:r分类数据预处理
