继承我的数据,
> 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
我很感激这个问题的任何帮助。非常感谢。
答案 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)
解决方案非常简单。
您可以通过对字符串向量进行子集化和大写来解决此问题。
stringr::str_sub()
子集一个字符串向量。 str_sub(string,
1, 1)
表示第一个字母。 str_sub(df, 1, 1)
返回一个
首字母的向量。 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()