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

时间:2013-04-27 07:32:37

标签: r dataframe uppercase

继承我的数据,

> 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

我很感激这个问题的任何帮助。非常感谢。

3 个答案:

答案 0 :(得分:12)

?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

答案 1 :(得分:5)

或者,以?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

答案 2 :(得分: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()