7

这是我的数据,

> 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

对于这个问题,我将不胜感激。非常感谢。

4

3 回答 3

15

从文档中获取示例?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
于 2013-04-27T07:41:13.787 回答
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
于 2013-04-27T13:54:28.943 回答
0

解决方案非常简单。

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

  • Step1:stringr::str_sub()子集一个字符串向量。str_sub(string, 1, 1)表示第一个字母。str_sub(df, 1, 1)返回第一个字母的向量。
  • Step2: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()

于 2020-05-20T22:47:37.443 回答