楼主: yijiaobani
36338 10

[问答] R语言中数据框某一列进行分割,变成两列 [推广有奖]

  • 4关注
  • 5粉丝

已卖:70份资源

博士生

26%

还不是VIP/贵宾

-

威望
0
论坛币
196 个
通用积分
10.7311
学术水平
2 点
热心指数
8 点
信用等级
0 点
经验
5127 点
帖子
147
精华
0
在线时间
236 小时
注册时间
2015-5-18
最后登录
2020-10-28

楼主
yijiaobani 发表于 2018-3-12 09:19:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好,我想将数据框的某一列变成两列,比如数据:

  1.       type    id pedigree    trait1     trait2    trait3
  2. 1 training L0001  f1_X_m1 -1.746103 -0.7855251 -0.331637
  3. 2 training L0002  f2_X_m1 -1.679248 -1.5694899 -2.572614
  4. 3 training L0003  f3_X_m1 -2.748920 -0.6086439 -1.108812
  5. 4 training L0004  f4_X_m1 -2.414647 -0.6720451 -1.315051
  6. 5 training L0005  f5_X_m1 -1.879812 -0.7409128 -1.879181
  7. 6 training L0006  f6_X_m1 -2.347793 -0.4017722 -1.442920
复制代码
数据框中test的pedigree一列,我想将pedigree用切割符“_X_”,变成f和m两列
  1.       type    id f m trait1     trait2    trait3
  2. 1 training L0001  f1 m1 -1.746103 -0.7855251 -0.331637
  3. 2 training L0002  f2 m1 -1.679248 -1.5694899 -2.572614
  4. 3 training L0003  f3 m1 -2.748920 -0.6086439 -1.108812
  5. 4 training L0004  f4 m1 -2.414647 -0.6720451 -1.315051
  6. 5 training L0005  f5 m1 -1.879812 -0.7409128 -1.879181
  7. 6 training L0006  f6 m1 -2.347793 -0.4017722 -1.442920
复制代码
我的繁琐复杂的代码:
  1. > test$f <- NULL
  2. > test$m <- NULL
  3. > re <- strsplit(as.character(test$pedigree),"_X_")
  4. > for(i in 1:dim(test)[2]) {test$f[i] <- re[[i]][1];test$m[i] <- re[[i]][2]}
  5. > test
  6.       type    id pedigree    trait1     trait2    trait3  f  m
  7. 1 training L0001  f1_X_m1 -1.746103 -0.7855251 -0.331637 f1 m1
  8. 2 training L0002  f2_X_m1 -1.679248 -1.5694899 -2.572614 f2 m1
  9. 3 training L0003  f3_X_m1 -2.748920 -0.6086439 -1.108812 f3 m1
  10. 4 training L0004  f4_X_m1 -2.414647 -0.6720451 -1.315051 f4 m1
  11. 5 training L0005  f5_X_m1 -1.879812 -0.7409128 -1.879181 f5 m1
  12. 6 training L0006  f6_X_m1 -2.347793 -0.4017722 -1.442920 f6 m1
复制代码

我的处理思路,将test$pedigree提取出来,变成字符串,然后用strsplit分割,然后复制数据框test新的列:f和m。
代码写的比较复杂,水平有限!!

我想问,有没有简单的处理方法?

十分感谢。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 数据框 Training Train Trait 数据框 字符串

回帖推荐

cheetahfly 发表于2楼  查看完整内容

<img src="stati ...

沙发
cheetahfly 在职认证  发表于 2018-3-12 09:32:36
  1. library(tidyverse)
  2. separate(data = test, col = pedigree, into = c("m", "trait1"), sep = "_X_")
复制代码
已有 1 人评分论坛币 收起 理由
jiangbeilu + 10 精彩帖子

总评分: 论坛币 + 10   查看全部评分

藤椅
yijiaobani 发表于 2018-3-12 13:52:26
cheetahfly 发表于 2018-3-12 09:32
就是这种效果,十分感谢。

板凳
ccs0531 发表于 2018-7-20 22:55:18
cheetahfly 发表于 2018-3-12 09:32
这个方法好!

报纸
王樰沫 学生认证  发表于 2018-8-6 00:17:30
cheetahfly 发表于 2018-3-12 09:32
请问如果是”||165万|13525元/㎡|“这种形式的,如何把他分割为“165万,13525元/㎡”这样两列

地板
BuZhiDaoorz 发表于 2019-4-26 14:29:22
感谢感谢!!

7
jiangbeilu 学生认证  发表于 2019-4-26 15:08:31
王樰沫 发表于 2018-8-6 00:17
请问如果是”||165万|13525元/㎡|“这种形式的,如何把他分割为“165万,13525元/㎡”这样两列
把竖线替换成“,”不就OK了么
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

8
huanglinlinya 发表于 2021-9-1 16:04:28
请问如果每行的列数不一样多,怎么解决呢?

9
liiooonn 发表于 2021-10-6 21:00:31
huanglinlinya 发表于 2021-9-1 16:04
请问如果每行的列数不一样多,怎么解决呢?
您好,我现在也遇到了这个问题,请问您解决了吗?

10
bingekong 发表于 2022-4-2 08:22:41 来自手机
cheetahfly 发表于 2018-3-12 09:32
对不起,想按点赞,按错了,撤不了

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 05:16