楼主: dxystata
1831 10

[问答] R中字符处理 [推广有奖]

版主

已卖:302份资源

大师

37%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
183395 个
通用积分
15333.1475
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
298627 点
帖子
5586
精华
1
在线时间
13632 小时
注册时间
2006-6-21
最后登录
2025-12-22

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

楼主
dxystata 发表于 2016-11-8 08:22:52 |AI写论文
20论坛币
  1. x1=c("1. aa","2. bb","15. cc","101. dd")
  2. x2=c("(Submitter supplied) a","(Submitter supplied) cd","(Submitter supplied) a1","(Submitter supplied) abc")
  3. x3=c("Organism:a","Organism:ab","Organism:ac","Organism:ef")
  4. aaa<-data.frame(x1,x2,x3)
  5. aaa
复制代码
希望得到的数据框
x1 x2 x3
aa a a
bb cd ab
cc a1 ac
dd abc ef
要求x1去掉字母前的数字 . 和空格。
      x2去掉(Submitter supplied)和空格,最好用识别")和空格"的函数实现
      x3去掉Organism:,最好用识别:的函数实现
谢谢!

最佳答案

飞天玄舞6 查看完整内容

不过这样做确实有些麻烦哈,应该还有比这更好的办法吧。
关键词:supplied submit Supp BMI IED supplied

沙发
飞天玄舞6 在职认证  发表于 2016-11-8 08:22:53
  1. library(tidyr)
  2. aaa1<-separate(aaa,col=x1, into = c("num","x1"), sep=" ")
  3. aaa2<- separate(aaa1,col=x2,into= c("ss","x2"),sep="\\) ")
  4. aaa3<-separate(aaa2,col=x3,into=c("org","x3"),sep= ":")
  5. aaa3
  6. aaa4 <- aaa3[,c(2,4,6)]
  7. aaa4
复制代码

不过这样做确实有些麻烦哈,应该还有比这更好的办法吧。

藤椅
dxystata 发表于 2016-11-8 10:45:12
飞天玄舞6 发表于 2016-11-8 09:06
不过这样做确实有些麻烦哈,应该还有比这更好的办法吧。
期待更好地办法

板凳
不懂不装懂 发表于 2016-11-8 17:20:25
.......

报纸
不懂不装懂 发表于 2016-11-8 17:30:07
  1. >  require(stringr)
  2. > x1=c("1. aa","2. bb","15. cc","101. dd")
  3. > x2=c("(Submitter supplied) a","(Submitter supplied) cd","(Submitter supplied) a1","(Submitter supplied) abc")
  4. > x3=c("Organism:a","Organism:ab","Organism:ac","Organism:ef")
  5. > aaa<-data.frame(x1,x2,x3)
  6. >  
  7. > apply(aaa,2,function(x) str_trim(str_sub(x,regexpr("\\. |\\) |:",x)+1),side = "both"))
  8.      x1   x2    x3  
  9. [1,] "aa" "a"   "a"
  10. [2,] "bb" "cd"  "ab"
  11. [3,] "cc" "a1"  "ac"
  12. [4,] "dd" "abc" "ef"
复制代码

已有 1 人评分经验 论坛币 学术水平 热心指数 收起 理由
dxystata + 100 + 20 + 1 + 2 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 20  学术水平 + 1  热心指数 + 2   查看全部评分

地板
dxystata 发表于 2016-11-8 21:05:32
不懂不装懂 发表于 2016-11-8 17:30
如何将x3中提取的Organism作为x3的列名
colnames(aaa$x3)<-"Organism"
红色部分如何用提取的函数实现?

7
hanson.don 发表于 2016-11-9 07:24:51
gsub("[0-9]+\\.+\\ ","",x1)->x1,可以了
已有 1 人评分经验 论坛币 学术水平 热心指数 收起 理由
dxystata + 100 + 10 + 1 + 2 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 10  学术水平 + 1  热心指数 + 2   查看全部评分

8
不懂不装懂 发表于 2016-11-9 13:35:02
> require(stringr)
> x3n<-str_trim(str_sub(x3,1,regexpr(":",x3)-1),side = "both")
> x3n
[1] "Organism" "Organism" "Organism" "Organism"
如果仅限于x3,也可用楼上的方法
> gsub(":[a-z]+","",x3)
[1] "Organism" "Organism" "Organism" "Organism"

9
dxystata 发表于 2016-11-17 20:34:41
hanson.don 发表于 2016-11-9 07:24
gsub("[0-9]+\\.+\\ ","",x1)->x1,可以了
x2 x3用gsub如何实现?谢谢!

10
hanson.don 发表于 2016-11-17 22:47:09
dxystata 发表于 2016-11-17 20:34
x2 x3用gsub如何实现?谢谢!
gsub("\\(Submitter supplied\\) ","",x2)->X2
gsub("Organism:","",x3)->X3
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
dxystata + 100 + 20 + 2 + 2 + 2 精彩帖子

总评分: 经验 + 100  论坛币 + 20  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:18