如何根据另一列的部分字符串创建新列

3

我有一个数据框,其中包含数千个项目代码的向量,每个代码代表不同类型的研究。以下是一个示例:

Data <- data.frame(Assignment = c("C-209", "B-543", "G-01", "LOG"))

任务代码的第一个字母表示研究类型。C=制图学,B=生物学,G=地质学,LOG=后勤。

我想创建一个新列,查看“任务”列的第一个字母,并使用它表示研究的类型。

我尝试了类似于这个线程的东西,但我知道我漏掉了一些内容:

R - 根据部分字符串创建新的列

Data <- data.frame(Assignment = c("C-209", "B-543", "G-01", "LOG"))

Types <- data.frame(Type = c("Cartography", "Biology", "Geology","Logistic"), 
                 stringsAsFactors = FALSE)

Data %>% 
  mutate(Type = str_match(Assignment, Types$Type)[1,])
1个回答

4
您可以在Types数据框中添加一个新的Code列,然后将其与原始表格连接。您还需要在Data数据框中创建一个Code列。"最初的回答"。
    library(dplyr)
    library(stringr)

    Data <- data.frame(Assignment = c("C-209", "B-543", "G-01", "LOG"))

    Types <- data.frame(Type = c("Cartography", "Biology", "Geology","Logistic"),
                    Code = c("C","B","G","L"), # Create new column here
                    stringsAsFactors = FALSE)


    Data <- Data %>% mutate(Code = substr(Assignment,1L,1L)) # extract first character

    Data <- left_join(Data, Types, by = "Code") %>% select(Assignment, Type) # combine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接