将 Unicode Emoji 正确读入 R

2024-03-01

我有一组来自 Facebook 的评论(通过 Sprinkr 等系统拉取),其中包含文本和表情符号,我尝试在 R 中对它们进行各种分析,但在正确提取表情符号字符方面遇到了困难。

例如:我有一个 .csv(以 UTF-8 编码),其消息行包含如下内容:

“这是正确的吗?!?!请说这不是真的!!!我们家只吃原味的里斯花生酱杯????????????”

然后我通过以下方式将其引入 R 中:

library(tidyverse)
library(janitor)
raw.fb.comments <- read_csv("data.csv",
                            locale = locale(encoding="UTF-8"))
fb.comments <- raw.fb.comments %>%
  clean_names() %>%
  filter(senderscreenname != "Reese's") %>% 
  select(c(message,messagetype,sentiment)) %>%
  mutate(type = "Facebook")
fb.comments$message[5]
[1] "IS THIS CORRECT!?!?! Please say it isn't true!!! Our family only eats the original Reeses Peanut Butter Cups\xf0\u009f\u0092\u009a\xf0\u009f\u0092\u009a\xf0\u009f\u0092\u009a\n\n"

现在,根据我从其他来源了解到的情况,我需要将这个 UTF-8 转换为 ASCII,然后我可以用它来将它与其他表情符号资源链接起来(比如精彩的表情符号资源)表情符号词典 https://github.com/lyons7/emojidictionary)。为了使连接工作,我需要将其转换为 R 编码,如下所示:

<e2><9d><a4><ef><b8><8f>

但是,添加正常步骤(使用iconv)没有让我到达那里:

fb.comments <- raw.fb.comments %>%
  clean_names() %>%
  filter(senderscreenname != "Reese's") %>% 
  select(c(message,messagetype,sentiment)) %>%
  mutate(type = "Facebook") %>%
  mutate(message = iconv(message, from="UTF-8", to="ascii",sub="byte"))
fb.comments$message[5]
[1] "IS THIS CORRECT!?!?! Please say it isn't true!!! Our family only eats the original Reeses Peanut Butter Cups<f0><9f><92><9a><f0><9f><92><9a><f0><9f><92><9a>\n\n"

任何人都可以向我阐明我所缺少的内容,或者我是否需要找到不同的表情符号映射资源?谢谢!


目标并不明确,但我怀疑放弃正确表示表情符号并仅将其表示为字节并不是最好的方法。例如,如果您希望将表情符号转换为其描述,您可以执行以下操作:

x <- "IS THIS CORRECT!?!?! Please say it isn't true!!! Our family only eats the original Reeses Peanut Butter Cups????????????"

## read emoji info and get rid of documentation lines
readLines("https://unicode.org/Public/emoji/5.0/emoji-test.txt",
          encoding="UTF-8") %>%
    stri_subset_regex(pattern = "^[^#]") %>%
    stri_subset_regex(pattern = ".+") -> emoji

## get the emoji characters and clean them up
emoji %>%
    stri_extract_all_regex(pattern = "# *.{1,2} *") %>%
    stri_replace_all_fixed(pattern = c("*", "#"),
                           replacement = "",
                           vectorize_all=FALSE) %>%
    stri_trim_both() -> emoji.chars

## get the emoji character descriptions
emoji %>%
    stri_extract_all_regex(pattern = "#.*$") %>%
    stri_replace_all_regex(pattern = "# *.{1,2} *",
                           replacement = "") %>%
    stri_trim_both() -> emoji.descriptions


## replace emoji characters with their descriptions.
stri_replace_all_regex(x,
                       pattern = emoji.chars,
                       replacement = emoji.descriptions,
                       vectorize_all=FALSE)

## [1] "IS THIS CORRECT!?!?! Please say it isn't true!!! Our family only eats the original Reeses Peanut Butter Cupsgreen heartgreen heartgreen heart"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Unicode Emoji 正确读入 R 的相关文章

  • 如何声明包含 M 个元素的列表对象

    我想声明一个包含 M 3 x 3 矩阵的列表 如果我事先知道数字 M 那么我可以通过以下方式声明这样的列表 elm lt matrix NA 3 3 Say M 7 myList lt list elm elm elm elm elm el
  • 在 Shiny 中显示反应式 htmlTable 表格

    我正在制作我的第一个 Shiny 应用程序 但找不到任何有关如何显示使用 htmlTable 包创建的表格的示例 我基本上想在按下按钮时创建一个表格并显示它 Shiny 显示 html 代码而不是表格 我不知道用什么替换服务器部分中的 re
  • 在 RMarkdown 输出到 PDF 时缩进而不添加项目符号点或编号

    之前有人问过如何在没有项目符号的情况下缩进文本 RMarkdown 中的点 但这是针对 HTML 输出的 在 RMarkdown 中缩进而不添加项目符号点或数字 https stackoverflow com questions 47087
  • R:按组,测试一个变量的每个值是否存在于另一个变量中

    我有一个数据框架 结构如下 a lt c 1 1 1 2 2 2 3 3 3 3 4 4 b lt c 1 2 3 1 2 3 1 2 3 4 1 2 c lt c NA NA 2 NA 1 1 NA NA 1 1 NA NA df lt
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • 当将遗传算法与 lme4 一起使用时,glmulti 无限期运行

    我在 R 中使用 glmulti 进行模型平均 我的模型中有大约 10 个变量 使得详尽的筛选不切实际 因此我需要使用遗传算法 GA 调用 method g 我需要包含随机效应 因此我使用 glmulti 作为 lme4 的包装器 此处提供
  • 在 PowerShell 中显示 Unicode 表情符号

    我想在 PowerShell 中显示像 U 1F4A9 这样的 Unicode 表情符号 我知道这仅在 ISE 控制台内有效 但我不知道如何操作 到目前为止我尝试过的 CharBytes System Text Encoding Unico
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • 使用数据帧的 R 中的 EWMA 波动性

    我正在尝试从一系列股票每日收益中获取 EWMA 波动性 这些收益来自一个名为base retorno diario Data IBOV ABEV3 AEDU3 ALLL3 BBAS3 BBDC3 BBDC4 1 2000 01 04 0 0
  • 如何重载比较器以使用 UTF-8 和不同区域设置进行排序

    我有一个数据集合 Alphabet Zend wiczenia 结果collection sort I get Alphabet Zend wiczenia 如何超载comparator使用 UTF 8 和不同的语言环境进行排序 你需要设置
  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • ggplot2:带有 geom_line 的 x 轴因子不起作用

    我想要一个线图 其中value绘制为函数expt每级一行var 这是我的数据 lines lt expt var value 1 none p 0 183065327746799 2 none p 0 254234138384241 3 n
  • R:改变堆积条形图的颜色

    library ggplot2 df2 lt data frame supp rep c VC OJ each 3 dose rep c D0 5 D1 D2 2 len c 6 8 15 33 4 2 10 29 5 head df2 g
  • 将名称字符串编码为唯一的数字

    我有一大堆名字 数以百万计 他们每个人都有一个名字 一个可选的中间名和一个姓氏 我需要将这些名称编码为唯一代表这些名称的数字 编码应该是一对一的 即一个名称只能与一个数字相关联 一个数字只能与一个名称相关联 对此进行编码的明智方法是什么 我
  • 使用data.table进行聚合

    经过 SO 用户的多次建议后 我终于尝试将我的代码转换为使用data table library data table DT lt data table plate paste0 plate rep 1 2 each 5 id rep c
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 更改ggplot2中的字体

    曾几何时 我改变了我的ggplot2字体使用windowsFonts Times windowsFont TT Times New Roman 现在 我无法摆脱这一切 在尝试设置family in ggplot2 theme 当我用不同的字
  • 如何在R中实现countifs函数(excel)

    我有一个包含 100000 行数据的数据集 我尝试做一些countifExcel 中的操作 但速度慢得惊人 所以我想知道R中是否可以完成这种操作 基本上 我想根据多个条件进行计数 例如 我可以指望职业和性别 row sex occupati
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d

随机推荐

  • 访问类内的函数指针

    我在类中定义函数指针并尝试通过该类的实例访问它 但它显示错误 这是代码 1 include
  • 无法在 Eclipse 中将项目添加到 Tomcat 服务器

    我无法将我的项目添加到 Eclipse 中的服务器 这是为什么 我安装了所有必要的工具 Web Dev Java EE 服务器适配器和 Tomcat 本身 一切 我配置了运行时环境 将所有 Java 版本调整为 JDK 6 因为它应该在 T
  • 有效计算边界自适应邻域平均值

    我有一张图像 其值范围为 0 到 1 我喜欢做的是简单的平均 但是 更具体地说 对于图像边界处的单元格 我想计算位于图像范围内的邻域 内核部分的像素平均值 事实上 这可以归结为适应 平均公式 的分母 即总和除以的像素数 我设法做到这一点 如
  • 将风格应用于第一个孩子?

    有没有某种方法可以将样式应用于容器的第一个 或最后一个或第 n 个 子容器 任何包含子容器的容器 我正在尝试自定义选项卡项目的外观 以便第一个选项卡具有与其他选项卡不同的边框半径 这就是我现在所拥有的
  • 让 Java servlet 充当代理的代码?

    我有两个 Java Web 应用程序 它们有一个映射到特定 URL 的 servlet red war WEB INF classes com me myorg red RedServlet maps to http red example
  • 一个更好的程序来计算数字的平方根

    我是 C 编程语言的初学者 我的任务是编写一个程序来计算自然数的平方根 而不使用math h或任何其他库函数 除了stdio h 看看我们的合作伙伴int自始至终 对于非平方数 我们求 n 的平方根的下限 现在我已经编写了这个程序 但它只适
  • 带 goto 的扩展 asm(包括 gcc 文档中的示例)无法编译

    一些扩展的汇编语句使用goto限定符无法使用 GCC 10 1 0 进行编译 具体来说 int foo int count asm goto dec 0 jb l stop r count stop return count stop re
  • 仍登录 MVC 站点,但无法调用 Web API

    我有一个 ASP NET MVC 站点 IdentityServer4 主机和一个 Web API 当我使用外部提供商 Facebook 登录 MVC 站点时 我登录得很好 从 MVC 站点我还可以正确使用 Web API 然而 第二天 我
  • PHP 中的百分号是什么意思?

    这到底是什么意思 number 3 2 7 7 这是modulus http ca php net manual en language operators arithmetic php如上所述 运算符返回除法运算的余数 例子 3 5返回
  • 在 Windows 上向 QProcess 发送 Ctrl+C

    抓紧你的马鞍 这是一个很长的马鞍 如果您不想阅读所有内容 请跳至 MCVE 部分 我正在尝试制定一个流程QProcess优雅地退出 我不控制有问题的进程如何退出 它只接受 Ctrl C 信号 令我困惑的是 这听起来非常简单明了QProces
  • 使用 Kafka Connect 将架构和数据更改从 MySQL 流式传输到 MySQL

    我们如何使用 Kafka 连接源连接器将架构和数据更改以及某种转换传输到另一个 MySQL 实例 如果我使用 Kafka 的 Python 库 confluence kafka 在加载到目标数据库之前消费和转换消息 是否有办法传播模式更改
  • ChipGroup单选

    我怎样才能强制ChipGroup表现得像RadioGroup就像总是至少有一个选定的项目一样 环境setSingleSelection true 如果您单击两次 还可以增加不选择任何内容的可能性Chip 为了防止所有芯片被取消选择 您可以使
  • numpy python:从一列中查找另一列中每个唯一值的最高值

    有人可以建议一种有效的方法来为另一列中的每个唯一值获取一列中的最高值吗 np array 看起来像这样 column0 column1 column2 column3 37367 421 231385 93 37368 428 235156
  • iOS 中可以使用 RFCOMM 吗?

    我在 iOS 开发方面相对较新 我想做一个跨平台的蓝牙应用程序 在Android中 我使用RFCOMM发送custom数据 如字符串 当我用谷歌搜索 iOS蓝牙 时 我找到了Core Bluetooth结果中的框架似乎是为低能耗连接而设计的
  • 根据条件清理数据框

    我有一个看起来像这样的数据框 虚拟数据 df1 lt structure list Date c 24 06 2002 24 06 2002 25 06 2002 02 07 2002 24 07 2002 08 07 2002 08 07
  • 熊猫:增加日期时间

    我需要采取一些行动date在 df 列中 buys date min buys date MonthDelta 1 buys date min buys date timedelta days 5 但它返回 类型错误 日期时间 时间增量操作
  • Shell 脚本参数[重复]

    这个问题在这里已经有答案了 解析 shell 脚本命令中的参数然后验证它的最佳方法是什么 例如bash someScript sh p
  • 以 2 为底的对数刻度

    我想使用对数刻度绘制以下几对点 import matplotlib pyplot as plt f ax plt subplots 1 xdata 256 512 1024 2048 ydata 1 2 30 150 ax scatter
  • “可能会损失精度”是 Java 发疯了还是我遗漏了一些东西?

    AFAIK 当我不应该出现 精度损失 错误时 我却收到了 精度损失 错误 这是一个实例变量 byte move 0 这发生在此类的方法中 this move this move lt lt 4 byte Guy moven indexOf
  • 将 Unicode Emoji 正确读入 R

    我有一组来自 Facebook 的评论 通过 Sprinkr 等系统拉取 其中包含文本和表情符号 我尝试在 R 中对它们进行各种分析 但在正确提取表情符号字符方面遇到了困难 例如 我有一个 csv 以 UTF 8 编码 其消息行包含如下内容