簡體   English   中英

如何將一列中的多個字符串替換為數字

[英]How do I replace multiple character strings in a column to numbers

我相信這是一個簡單的問題,但在網上找不到任何可澄清的地方。 我正在R中處理CSV文件,並且有一列標記為Gender的列具有2個級別“ M”和“ F”。 我正在嘗試更改變量,以使F = 1和M = 0都具有數字類型。 我需要插入什么代碼才能更改性別?

我試過使用gsub,replace函數和以下格式的代碼:

Test[Test$Gender == "F",]$Gender = 1

當我鍵入上面的代碼時,它返回錯誤消息:

[<-.data.frame*tmp* ,Test $ Gender ==“ F”,,value = list(中的錯誤::數據幀的下標分配中不允許缺少值

為了正確地將M和F替換為0和1,我需要做什么?

通過控制Gender水平的一種可能方法是:

#dummy data:
Test = data.frame(Gender = factor(sample(c('M','F'), replace=T, size=10)))
# solution:    
Test$Gender = as.integer(factor(Test$Gender, levels=c('F','M')))-1

您可以使用levels選擇哪個級別(M或F)獲得第一個值。

使用Tidyverse方法:

library(tidyverse)
Test <- data.frame(Gender=c("F","M","F","M"))
Test %>% 
    mutate(Gender_mod=case_when(
        Gender=="F" ~ 1,
        Gender=="M" ~ 0
    )

然后創建一個新變量,將舊變量編碼為帶有desiderd值的新變量。

  Gender Gender_mod
1      F          1
2      M          0
3      F          1
4      M          0

或者,您可以決定替換原始變量中的值:

Test %>% 
   mutate(Gender=as.numeric(str_replace_all(string=Gender,pattern=c("F","M"),replacement=c("1","0"))))

這是輸出:

  Gender
1      1
2      0
3      1
4      0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM