-3
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大写姓和名的数据帧列
我可以使用以下代码单独或使用管道完成此操作。但我希望创建一个函数,因为我必须多次执行此操作,但在使用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)
我有一个功能,我写的很久以前就做到这一点,但它并没有使用任何特殊的软件包。你要吗?它适用于McName,阿拉伯语名称等。 –
如果你的问题是在写一个函数,你应该清楚你的输入和输出是什么。你想给它一个数据框?你想利用所有列吗?你的函数是否需要猜测是否用逗号分隔?你会保证所有的列都是字符串吗?你有没有其他的理由可以给它? – Gregor
不是我真的推荐这种方法,而是:'库(tidyr);图书馆(dplyr); DF%>%separate(Names,c('First','Last'))%> mutate_at(vars(-City),funs(paste0(substr(。,1,1),tolower(substr(。,2 ,nchar(。))))))%>%unite(Names,First,Last,sep ='')尽管如此,几乎任何技术都会杀死“McMurphy”的第二个“M”。 – alistaire