如何删除数据框中列名的特定部分?
How to remove a certain portion of the column name in a dataframe?
我有以下格式的列名称:
col= c('UserLanguage','Q48','Q21...20','Q22...21',"Q22_4_TEXT...202")
我想获取不包含...
之后所有内容的列名
[1] "UserLanguage" "Q48" "Q21" "Q22" "Q22_4_TEXT"
我不知道如何编码。我找到了这个 post 但我不确定如何在我的案例中指定模式。
您可以使用 gsub
.
gsub("\...*","",col)
#[1] "UserLanguage" "Q48" "Q21" "Q22" "Q22_4_TEXT"
或者您可以使用 stringr
library(stringr)
str_remove(col, "\...*")
由于 .
匹配任何字符,我们需要“转义”(\
)以在正则表达式中准确指定我们要匹配的内容(而不是使用 [ 的特殊行为=14=]).因此,要匹配句点,我们需要 \.
。但是,反斜杠 (\
) 用于转义正则表达式中的特殊行为(例如,字符串中的转义符号)。因此,要创建正则表达式,我们需要一个额外的反斜杠,\.
在这种情况下,我们想要匹配额外的句点,因此我们可以在此处添加这些句点,因此 \...
。然后,*
指定前面的表达式(三个句点的所有内容)可能出现 0 次或多次。
您可以 sub
并捕获每列中的第一个单词:
col <- c("UserLanguage", "Q48", "Q21...20", "Q22...21", "Q22_4_TEXT...202")
sub("^(\w+).*$", "\1", col)
[1] "UserLanguage" "Q48" "Q21" "Q22" "Q22_4_TEXT"
此处使用的正则表达式匹配:
^ from the start of the input
(\w+) match AND capture the first word
.* then consume the rest
$ end of the input
然后,我们使用 sub
替换为
以仅保留第一个单词。
我有以下格式的列名称:
col= c('UserLanguage','Q48','Q21...20','Q22...21',"Q22_4_TEXT...202")
我想获取不包含...
之后所有内容的列名[1] "UserLanguage" "Q48" "Q21" "Q22" "Q22_4_TEXT"
我不知道如何编码。我找到了这个 post
您可以使用 gsub
.
gsub("\...*","",col)
#[1] "UserLanguage" "Q48" "Q21" "Q22" "Q22_4_TEXT"
或者您可以使用 stringr
library(stringr)
str_remove(col, "\...*")
由于 .
匹配任何字符,我们需要“转义”(\
)以在正则表达式中准确指定我们要匹配的内容(而不是使用 [ 的特殊行为=14=]).因此,要匹配句点,我们需要 \.
。但是,反斜杠 (\
) 用于转义正则表达式中的特殊行为(例如,字符串中的转义符号)。因此,要创建正则表达式,我们需要一个额外的反斜杠,\.
在这种情况下,我们想要匹配额外的句点,因此我们可以在此处添加这些句点,因此 \...
。然后,*
指定前面的表达式(三个句点的所有内容)可能出现 0 次或多次。
您可以 sub
并捕获每列中的第一个单词:
col <- c("UserLanguage", "Q48", "Q21...20", "Q22...21", "Q22_4_TEXT...202")
sub("^(\w+).*$", "\1", col)
[1] "UserLanguage" "Q48" "Q21" "Q22" "Q22_4_TEXT"
此处使用的正则表达式匹配:
^ from the start of the input
(\w+) match AND capture the first word
.* then consume the rest
$ end of the input
然后,我们使用 sub
替换为 以仅保留第一个单词。