楼主: 中国火箭
3467 2

[问答] R语言两个数据集条件匹配的问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

46%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
344 点
帖子
27
精华
0
在线时间
138 小时
注册时间
2005-6-11
最后登录
2018-10-1

50论坛币



假设现在有数据集A:
description
今天天气真晴朗
今天好像下雨了
明天听说要下雪
天晴啦可以出去玩了

其中有一列叫description 是如图所示的



然后想要将数据集B的信息待匹到A上, B 数据集如下:
AB
SUN
RAIN
SNOW




希望实现的是 description列如果包含B表的A列,则匹配上B表的B列;

如grepl(“晴”|"今天天气真晴朗")==T, 则 匹配上SUN;
上图给的列子匹配好应该可以得到:
descriptionB
今天天气真晴朗SUN
今天好像下雨了RAIN
明天听说要下雪SNOW
天晴啦可以出去玩了SUN





请教各位大神,如何实现这样的匹配??

最佳答案

ntsean 查看完整内容

一般来说B应该是比较小的数据, 下面的code考虑了多个match的情况
关键词:R语言 数据集 Description script scrip 今天天气 下雪天 如图所示 如何 信息

回帖推荐

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

一般来说B应该是比较小的数据, 下面的code考虑了多个match的情况
沙发
ntsean 发表于 2016-8-29 11:08:57 |只看作者 |坛友微信交流群
一般来说B应该是比较小的数据, 下面的code考虑了多个match的情况
  1. A <- data.frame(desc = c("今天天气真晴朗",
  2.                         "今天好像下雨了",
  3.                 "明天听说要下雪",
  4.                 "天晴啦可以出去玩了",
  5.                 "天雪晴"), stringsAsFactors = F)

  6. B <- data.frame(A = c("晴","雨", "雪"),
  7.                 B = c("SUN", "RAIN", "SNOW"),
  8.                 stringsAsFactors = F)

  9. matched <- sapply(B$A, function(x) grepl(x, A$desc))

  10. matched <- apply(matched, 1, which)

  11. A$B <- sapply(matched, function(i) paste0(B$B[i], collapse = "|"))
复制代码
已有 1 人评分经验 论坛币 收起 理由
李会超 + 80 + 20 热心帮助其他会员

总评分: 经验 + 80  论坛币 + 20   查看全部评分

使用道具

藤椅
中国火箭 发表于 2016-8-29 11:13:49 |只看作者 |坛友微信交流群
如果可以,有没有不用多重循环解决的方法,因为数据量有点大,怕很慢~~~

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 12:26