R 基于其他列创建列数据集

R 基于其他列创建列数据集,r,dataframe,R,Dataframe,我有以下数据帧 name surname Mr. William John Mellors Miss. Wendla Maria Heininen Mrs. Sandra Gonzalez 这取决于“name”列是否显示“Mrs”“Miss”“Ms”我必须为标题为“title”的新列指定一个或另一个值 例如,对于“女士”,是已婚男性,对于“小姐”是未结婚的女性,或者是“女士”是已婚女性 这是输出数据集 name

我有以下数据帧

name                surname 
Mr. William John    Mellors
Miss. Wendla Maria  Heininen
Mrs. Sandra         Gonzalez
这取决于“name”列是否显示“Mrs”“Miss”“Ms”我必须为标题为“title”的新列指定一个或另一个值

例如,对于“女士”,是已婚男性,对于“小姐”是未结婚的女性,或者是“女士”是已婚女性

这是输出数据集

 name                surname      title
Mr. William John    Mellors       married men
Miss. Wendla Maria  Heininen      not married women
Mrs. Sandra         Gonzalez      married women
我不知道是否有一个函数来完成它,或者使用ifelse并将其分配到我的第一个数据帧

代码不工作

#dataframe loading
titanic <- read.table("C:/Users/sergio.urrea/Downloads/titanic.csv", header = TRUE, sep = ";")

titanic$title<-ifelse(titanic$name="Master","Hombre soltero",
                    ifelse(titanic$name="Miss","Mujer soltera"))
#数据帧加载

泰坦尼克号假设您的data.frame名为“df”

您也可以显式地引用第3列并保护这些“”


假设您的data.frame被称为“df”

您也可以显式地引用第3列并保护这些“”


stringr
使用
dplyr
stru-detect()

library(dplyr)
    library(stringr)

    df = data.frame(name = c("Mr. William John", "Miss. Wendla Maria", "Mrs. Sandra"), 
                        surname  = c(" Mellors", "Heininen", "Gonzalez")) 


        df %>% mutate(title = ifelse(str_detect(name, "Mr."), "married men",
                                     ifelse(str_detect(name, "Mrs."), "married woman",  "not married woman")))

                   name  surname             title
    1   Mr. William John  Mellors       married men
    2 Miss. Wendla Maria Heininen not married woman
    3        Mrs. Sandra Gonzalez       married men

stringr
使用
dplyr
stru-detect()

library(dplyr)
    library(stringr)

    df = data.frame(name = c("Mr. William John", "Miss. Wendla Maria", "Mrs. Sandra"), 
                        surname  = c(" Mellors", "Heininen", "Gonzalez")) 


        df %>% mutate(title = ifelse(str_detect(name, "Mr."), "married men",
                                     ifelse(str_detect(name, "Mrs."), "married woman",  "not married woman")))

                   name  surname             title
    1   Mr. William John  Mellors       married men
    2 Miss. Wendla Maria Heininen not married woman
    3        Mrs. Sandra Gonzalez       married men

使用ifelse方法:

df = data.frame(name = c("Mr. William John", "Miss. Wendla Maria", "Mrs. Sandra"), 
                surname  = c(" Mellors", "Heininen", "Gonzalez"))
# Set default value for *title* column
df$title <- 'married man'
# If name starts with 'Miss', then it is not married woman
df$title <- ifelse(grepl('^Miss. ', df$name), 'not married woman', df$title)
# If name starts with 'Mrs', then it is married woman
df$title <- ifelse(grepl('^Mrs. ', df$name), 'married woman', df$title)
df=data.frame(name=c(“威廉·约翰先生”、“温德拉·玛丽亚小姐”、“桑德拉夫人”),
姓氏=c(“梅勒斯”、“海宁宁”、“冈萨雷斯”))
#设置*title*列的默认值

df$title使用ifelse方法:

df = data.frame(name = c("Mr. William John", "Miss. Wendla Maria", "Mrs. Sandra"), 
                surname  = c(" Mellors", "Heininen", "Gonzalez"))
# Set default value for *title* column
df$title <- 'married man'
# If name starts with 'Miss', then it is not married woman
df$title <- ifelse(grepl('^Miss. ', df$name), 'not married woman', df$title)
# If name starts with 'Mrs', then it is married woman
df$title <- ifelse(grepl('^Mrs. ', df$name), 'married woman', df$title)
df=data.frame(name=c(“威廉·约翰先生”、“温德拉·玛丽亚小姐”、“桑德拉夫人”),
姓氏=c(“梅勒斯”、“海宁宁”、“冈萨雷斯”))
#设置*title*列的默认值

df$title您尝试过什么?因此,它不是一个代码编写服务。请阅读和阅读!无论如何,欢迎来到SO!使用“==”而不是“=”进行逻辑比较我已经尝试过了,这很难,我正在学习R和图,第一次尝试探索grep函数来检查名字中是否有mr或miss。你尝试过什么?因此,它不是一个代码编写服务。请阅读和阅读!无论如何,欢迎来到SO!使用“==”而不是“=”进行逻辑比较我已经尝试过了,这很难,我正在学习R和图,第一次尝试探索grep函数也很难检查名称中是否有mr或miss。