全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3085 22
2013-10-13
悬赏 200 个论坛币 已解决
假设我有一组数据
id             name           value
1             jin, joy           1
2              jou                6
3              po, yu           3
4              gh                 3
5              kl, yu             2
6              tt                   5
7              ttk                 1
8              dd, bbs,tt    9
9              irr                  2
10            jii                   3
我想把第二列中有逗号分隔的名字分开(有的可能有很多逗号分隔的名字不止两三个),并输出到下一行,没有逗号的不动:
希望输出结果这样:
id             name        value
1             jin               1
1             joy              1
2              jou             6
3              po              3
3              yu              3
4              gh              3
5              kl               2
5              yu              2
6              tt               5
7              ttk              1
8              dd              9
8             bbs              9
8              tt                9
9              irr                2
10            jii                 3
希望各位大神不吝指点,非常感谢!!

最佳答案

统计R浪人 查看完整内容

> id name value newdata newdata id name value 1 1 jin 1 2 1 joy 1 3 2 jou 6 4 3 po 3 5 3 yu 3 6 4 gh 3 7 5 kl 2 8 5 yu 2 9 6 tt 5 10 7 ttk 1 11 8 dd 9 12 8 bbs 9 13 8 tt 9 14 9 irr 2 15 10 jii 3 >
二维码

扫码加我 拉你入群

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

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

全部回复
2013-10-13 10:26:11
> id<-newid
> name<-newname
> value<-newvalue
> newdata<-data.frame(id,name,value)
> newdata
   id name value
1   1  jin     1
2   1  joy     1
3   2  jou     6
4   3   po     3
5   3  yu      3
6   4   gh     3
7   5   kl     2
8   5   yu     2
9   6   tt     5
10  7  ttk     1
11  8   dd     9
12  8  bbs     9
13  8   tt     9
14  9  irr     2
15 10 jii      3
>
复制代码
二维码

扫码加我 拉你入群

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

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

2013-10-13 10:52:00
现在这里谢谢了
二维码

扫码加我 拉你入群

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

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

2013-10-13 19:10:25
你好!假定你的数据名为data,你要转换的列为name
data$name<-gsub(","," ",data$name) #去掉逗号“,”注意双引号中有一个空格,这样才是几个单词。谨记。
regexp<-"([[:alpha:]]+) ([[:alpha:]]+) ([[:alpha:]]+)" #定义你的名字中最多的单词表达模式,你的例子中是3个。如果是4个,就是regexp<-"([[:alpha:]]+) ([[:alpha:]]+) ([[:alpha:]]+) ([[:alpha:]]+) "
data$name<-sub(pattern=regexp,replacement="\\1",x=data$name) #将3个单词的名字转换为1个单词
regexp<-"([[:alpha:]]+)  ([[:alpha:]]+)"  #定义你的名字中2个单词的表达模式。
data$name<-sub(pattern=regexp,replacement="\\1",x=data$name) #将2个单词的名字转换为1个单词
data$name #显示最终结果
#注意一定要按顺序来,不可倒换顺序,否则出错。

二维码

扫码加我 拉你入群

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

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

2013-10-13 19:42:36
nieqiang110 发表于 2013-10-13 19:10
你好!假定你的数据名为data,你要转换的列为name
data$name
您没明白我的意思 我是想输出结果直接显示成
id             name        value
1             jin               1
1             joy              1
2              jou             6
3              po              3
3              yu              3
4              gh              3
5              kl               2
5              yu              2
6              tt               5
7              ttk              1
8              dd              9
8             bbs              9
8              tt                9
9              irr                2
10            jii                 3

不是单纯对第二列操作
二维码

扫码加我 拉你入群

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

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

2013-10-13 20:37:06
哈哈哈,
你好!假定你的数据名为data,你要转换的列为name
data$name<-gsub(","," ",data$name) #去掉逗号“,”注意双引号中有一个空格,这样才是几个单词。谨记。
regexp<-"([[:alpha:]]+) ([[:alpha:]]+) ([[:alpha:]]+)" #定义你的名字中最多的单词表达模式,你的例子中是3个。如果是4个,就是regexp<-"([[:alpha:]]+) ([[:alpha:]]+) ([[:alpha:]]+) ([[:alpha:]]+) "
data$name<-sub(pattern=regexp,replacement="\\1",x=data$name) #将3个单词的名字转换为1个单词
regexp<-"([[:alpha:]]+)  ([[:alpha:]]+)"  #定义你的名字中2个单词的表达模式。
data$name<-sub(pattern=regexp,replacement="\\1",x=data$name) #将2个单词的名字转换为1个单词
data$name #显示最终结果
#注意一定要按顺序来,不可倒换顺序,否则出错。
data
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群