首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除R中数据框字符值列的一部分

如何删除R中数据框字符值列的一部分
EN

Stack Overflow用户
提问于 2018-05-31 07:21:34
回答 2查看 121关注 0票数 -1
代码语言:javascript
复制
  [1] NA                         NA                         
  [3] NA                         NA                         
  [5] "kilo130.9"            "kilo5075.69"       
  [7] "kilo465"              "kilo34.8"            
  [9] "kilo607.195"          "kilo1362.7"    

上面是我从R复制粘贴的一个数据帧的列,我运行了下面的代码来删除列中的单词kilo,但它不起作用。我没有得到一个错误,但它没有删除单词kilo。我使用了下面的代码

代码语言:javascript
复制
stopwords = readLines('stopwords.txt') #I put the word kilo in this txt file
x  = df$Dist
x  =  removeWords(x,stopwords)
df$newdist<-x

可能的原因是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-31 07:37:45

removeWords()只会删除与"kilo"完全匹配的单词(没有其他字符):

代码语言:javascript
复制
x <- c("kilo", "kilo2", "pound")
tm::removeWords(x, "kilo")
#> [1] ""      "kilo2" "pound"

这里有另一个选择:

代码语言:javascript
复制
library("stringr")
x <- c(NA, NA, NA, NA, "kilo130.9", "kilo5075.69", "kilo465", "kilo34.8", "kilo607.195", "kilo1362.7")
str_replace(x, "kilo", "")
#>  [1] NA        NA        NA        NA        "130.9"   "5075.69" "465"    
#>  [8] "34.8"    "607.195" "1362.7"
票数 1
EN

Stack Overflow用户

发布于 2018-05-31 07:42:14

这是一个使用gsub的基础R解决方案

代码语言:javascript
复制
# Sample data
w <- c(
    NA, NA,
    NA, NA,
    "kilo130.9", "kilo5075.69",
    "kilo465", "kilo34.8",
    "kilo607.195", "kilo1362.7")

# Strings that should be deleted
stopwords <- c("kilo", "something");

sapply(w, function(x)
    x <- gsub(sprintf("(%s)", paste(stopwords, collapse = "|")), "", x));
#       <NA>        <NA>        <NA>        <NA>   kilo130.9 kilo5075.69
#         NA          NA          NA          NA     "130.9"   "5075.69"
#    kilo465    kilo34.8 kilo607.195  kilo1362.7
#      "465"      "34.8"   "607.195"    "1362.7"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50614585

复制
相关文章

相似问题

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