在函数中使用 Dplyr 和 Tidyr 将 Dataframe 列中的名字和姓氏大写
Using Dplyr and Tidyr within a Function to Capitalize First and Last Names in a Dataframe Column
Names <- c("SUSAN,ALTOP","Brent,SPINER","KIM,YAMAGUCHI","John,McMurphy","Kevin,Y")
City <- c("Toronto","New York","Chicago","Toronto","Tokyo")
DF <- data.frame(Names,City)
我希望创建一个函数,将上面简单示例数据框中的名字和姓氏大写,以便名称读作 "Susan Altop"、"Brent Spiner"...等。 (请注意,我还删除了逗号。)
我可以使用以下代码单独或使用管道来完成此操作。但我希望创建一个函数,因为我必须多次执行此操作,但我不确定在使用 dplyr、tidyr 等时该怎么做。我也愿意接受更多使用列表的创造性建议和咕噜声,如果可能的话。
DF <- DF %>% separate(DF,Names,c("First","Last",sep=","),remove=TRUE)
DF <- DF %>% mutate_each(funs(tolower),First,Last)
DF <- DF %>% mutate_each(funs(Capitalize),First,Last)
DF <- DF %>% mutate(NewNames=paste0(First," ",Last)
stringi
包中的 stri_trans_totitle
函数似乎可以满足您的需求:
library(dplyr); library(stringi)
DF %>% mutate(Names = stri_trans_totitle(gsub(",", " ", Names)))
# Names City
# 1 Susan Altop Toronto
# 2 Brent Spiner New York
# 3 Kim Yamaguchi Chicago
# 4 John Mcmurphy Toronto
# 5 Kevin Y Tokyo
或使用 str_to_title
从 stringr
:
library(stringr)
DF %>% mutate(Names = str_to_title(gsub(",", " ", Names)))
# Names City
# 1 Susan Altop Toronto
# 2 Brent Spiner New York
# 3 Kim Yamaguchi Chicago
# 4 John Mcmurphy Toronto
# 5 Kevin Y Tokyo
Names <- c("SUSAN,ALTOP","Brent,SPINER","KIM,YAMAGUCHI","John,McMurphy","Kevin,Y")
City <- c("Toronto","New York","Chicago","Toronto","Tokyo")
DF <- data.frame(Names,City)
我希望创建一个函数,将上面简单示例数据框中的名字和姓氏大写,以便名称读作 "Susan Altop"、"Brent Spiner"...等。 (请注意,我还删除了逗号。)
我可以使用以下代码单独或使用管道来完成此操作。但我希望创建一个函数,因为我必须多次执行此操作,但我不确定在使用 dplyr、tidyr 等时该怎么做。我也愿意接受更多使用列表的创造性建议和咕噜声,如果可能的话。
DF <- DF %>% separate(DF,Names,c("First","Last",sep=","),remove=TRUE)
DF <- DF %>% mutate_each(funs(tolower),First,Last)
DF <- DF %>% mutate_each(funs(Capitalize),First,Last)
DF <- DF %>% mutate(NewNames=paste0(First," ",Last)
stringi
包中的 stri_trans_totitle
函数似乎可以满足您的需求:
library(dplyr); library(stringi)
DF %>% mutate(Names = stri_trans_totitle(gsub(",", " ", Names)))
# Names City
# 1 Susan Altop Toronto
# 2 Brent Spiner New York
# 3 Kim Yamaguchi Chicago
# 4 John Mcmurphy Toronto
# 5 Kevin Y Tokyo
或使用 str_to_title
从 stringr
:
library(stringr)
DF %>% mutate(Names = str_to_title(gsub(",", " ", Names)))
# Names City
# 1 Susan Altop Toronto
# 2 Brent Spiner New York
# 3 Kim Yamaguchi Chicago
# 4 John Mcmurphy Toronto
# 5 Kevin Y Tokyo