首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除r中列值中的字符(星号)?

如何删除r中列值中的字符(星号)?
EN

Stack Overflow用户
提问于 2017-05-24 01:04:20
回答 3查看 11.5K关注 0票数 4

所以我有一个数据帧,看起来像这样,但是有6k行:

代码语言:javascript
复制
AWC, LocationID
333, *Yukon
485, *Lewis Rich
76, *Kodiak
666, Kodiak
54, *Rays

如果可能的话,我想删除LocationID值中的星号,只保留原来的名称。所以*育空->育空。如果这是不可能的,你能帮我重命名一个列值吗?我是个新手。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-24 02:16:53

stringr包有一些非常方便的函数,用于对字符串进行矢量化操作。

在下面的代码中,我用''替换了*。请注意,在R中,正则表达式中的文字必须以双斜杠\\开头,而不是通常的单斜杠\

代码语言:javascript
复制
library(stringr) 
LocationID <- c('*Yukon','*Lewis Rich',  '*Kodiak', 'Kodiak', '*Rays')
AWC <- c(333, 485, 76, 666, 54)
df <- data.frame(LocationID, AWC)

df$location_clean <- stringr::str_replace(df$LocationID, '\\*', '')

结果是:

代码语言:javascript
复制
LocationID AWC location_clean
1      *Yukon 333          Yukon
2 *Lewis Rich 485     Lewis Rich
3     *Kodiak  76         Kodiak
4      Kodiak 666         Kodiak
5       *Rays  54           Rays
票数 12
EN

Stack Overflow用户

发布于 2020-07-10 17:54:35

这可以使用tidyverse包中的mutate谓词来实现。在我看来这更具可读性。因此,为了举例说明这一点,我创建了一个名为DT的数据集,重点放在LocationID上,以模拟手头的问题。

代码语言:javascript
复制
library(tidyverse)
DT <- data.frame('AWC'= c(333, 485, 76, 666, 54), 
                 'LocationID'= c('*Yukon','*Lewis Rich', '*Kodiak', 'Kodiak', '*Rays'))

head(DT)
  AWC  LocationID
1 333      *Yukon
2 485 *Lewis Rich
3  76     *Kodiak
4 666      Kodiak
5  54       *Rays

在下面的代码中,mutate允许用户更改列内容,gsub执行所需的替换(用""替换* ),从而保持数据清理流程的可跟随性。

代码语言:javascript
复制
DT <- DT %>% mutate(LocationID = gsub("\\*", "", LocationID))
head(DT)
  AWC LocationID
1 333      Yukon
2 485 Lewis Rich
3  76     Kodiak
4 666     Kodiak
5  54       Rays

注意到\\放在*之前作为转义字符

票数 4
EN

Stack Overflow用户

发布于 2017-05-24 02:26:00

使用gsub和转义字符\因为*是一个特殊字符,基本上用不带“”的字符替换*(因此删除它)

代码语言:javascript
复制
> so
  AWC   LocationID
1 333       *Yukon
2 485  *Lewis Rich
3  76      *Kodiak
4 666       Kodiak
5  54        *Rays


> so$LocationID=gsub("\\*","",so$LocationID)
> so
  AWC  LocationID
1 333       Yukon
2 485  Lewis Rich
3  76      Kodiak
4 666      Kodiak
5  54        Rays
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44140995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档