将数据框中的第一个字母大写

8
这是我的数据,
> data
   Manufacturers       Models
1   audi                RS5  
2   bmw                 M3  
3   cadillac            CTS-V  
4   lexus               ISF

我希望你能将第一列的首字母大写,就像这样:

> data
   Manufacturers       Models
1   Audi                RS5  
2   Bmw                 M3  
3   Cadillac            CTS-V  
4   Lexus               ISF

我需要在IT技术方面的问题上得到帮助,非常感谢。

3个回答

16

?toupper 文档中的示例为例,并稍作修改:

capFirst <- function(s) {
    paste(toupper(substring(s, 1, 1)), substring(s, 2), sep = "")
}

data$Manufacturers <- capFirst(data$Manufacturers)
> data
#   Manufacturers Models
# 1          Audi    RS5
# 2           Bmw     M3
# 3      Cadillac  CTS-V
# 4         Lexus    ISF

有没有一种方法可以使每个单词的第一个字母(如果每个条目可能超过一个单词)大写?堆栈上的其他解决方案使用apply并且速度太慢,我喜欢这个向量化的解决方案。 - wolfsatthedoor

7

或者,以?gsub为例:

data$Manufacturers <- gsub("^(\\w)(\\w+)", "\\U\\1\\L\\2", 
  data$Manufacturers, perl = TRUE)

> data
>  Manufacturers Models
1          Audi    RS5
2           Bmw     M3
3      Cadillac  CTS-V
4         Lexus    ISF

1

解决方案非常简单。

您可以通过对字符串向量进行子集和大写处理来解决此问题。

  • 步骤1:stringr::str_sub() 子集化一个字符串向量。str_sub(string, 1, 1) 表示第一个字母。str_sub(df, 1, 1) 返回第一个字母的向量。
  • 步骤2:stringr::str_to_upper() 将第一个字母转换为大写。
# Load package
    library(tidyverse)

# Your data
    df <- tibble(Manufacturers = c("audi", "bmw", "cadillac", "lexus"),
             Models = c("RS5", "M3", "CTS-V", "ISF"))

# Solution
    str_sub(df$Manufacturers, 1, 1) <- str_sub(df$Manufacturers, 1, 1) %>% str_to_upper()


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