R:如何在数据框列中用分号分隔每个单词的第一个大写字母?

R:如何在数据框列中用分号分隔每个单词的第一个大写字母?,r,dataframe,lowercase,R,Dataframe,Lowercase,假设我有一个数据帧df > df <- data.frame(Disease = c('Disease Entry1; disease Entry2', 'disease Entry4','disease Entry5; disease entry6'), ID = c(1,2,3)) > df Disease ID 1 Disease Entry1; disease Entry2 1 2 di

假设我有一个数据帧
df

> df <- data.frame(Disease = c('Disease Entry1; disease Entry2', 'disease Entry4','disease Entry5; disease entry6'), ID = c(1,2,3))
> df
                         Disease ID
1 Disease Entry1; disease Entry2  1
2                 disease Entry4  2
3 disease Entry5; disease entry6  3

我假设我会以某种方式使用
tolower
函数,但是如何考虑分号呢

您可以先将所有字母转换为小写,然后使用
gsub
在BOS或
之后转换字母
\\U
一起使用后参考
\\1
至大写:

df$Disease <- gsub("(?<=^|; )([a-z])", "\\U\\1", tolower(df$Disease), perl = T)

df
#                         Disease ID
#1 Disease entry1; Disease entry2  1
#2                 Disease entry4  2
#3 Disease entry5; Disease entry6  3

df$Disease您可以先将所有字母转换为小写,然后使用
gsub
在BOS或
之后转换字母
\\U
一起使用后参考
\\1
至大写:

df$Disease <- gsub("(?<=^|; )([a-z])", "\\U\\1", tolower(df$Disease), perl = T)

df
#                         Disease ID
#1 Disease entry1; Disease entry2  1
#2                 Disease entry4  2
#3 Disease entry5; Disease entry6  3

df$Disease是否总是以大写字母开头的单词
Disease
?或者这些词可以改变吗?如果没有,我建议使用
tolower()
,然后使用
gsub(“疾病”,“疾病”,df$disease)
应该更清楚@KenS.,
disease
只是我在本例中使用的占位符。事实上,它确实发生了变化。您可以使用
stringr::str_to_title
将所有单词转换为大写字母开头是否总是以大写字母开头的单词
Disease
?或者这些词可以改变吗?如果没有,我建议使用
tolower()
,然后使用
gsub(“疾病”,“疾病”,df$disease)
应该更清楚@KenS.,
disease
只是我在本例中使用的占位符。事实上,它确实发生了变化。您可以使用
stringr::str_to_title
将所有单词转换为大写字母开头只是为了澄清,BOS代表什么?字符串的开头。正如锚
^
所示。为了澄清,BOS代表什么?字符串的开头。正如锚
^
所示。