R语言data.frame的Encoding(中文乱码解决方式)

有时读入外部数据集时,会遇到中文字符是乱码的情况。这种情况往往是字符串没有指定对字符编码的缘故。

查看data.frame的列的字符编码方式

使用Encoding函数查看:

df %>% 
    select_if(is.character) %>%  # 选择是character的列
    map(Encoding) %>%            # 显示该列的encoding
    as.data.frame                # list整理成表

更进一步,采用stringi package的stri_enc_mark函数获取encoding方式

library(stringi)
df %>% 
    select_if(is.character) %>%
    map(stri_enc_mark) %>%
    as.data.frame

修改dataframe列的Encoding方式

比如,把df的是字符类型的列的编码方式指定为GB2312,以便消除乱码。

df2 = df %>% mutate_if(is.character, ~`Encoding<-`(., "GB2312"))

请注意,Encoding是指定字符串的编码方式,不改变内容。
stringi::stri_enc_toutf8会进行转码,改变字符串的原始字节内容。

df3 = df2 %>% mutate_if(is.character, stri_enc_toutf8)  # 修改成utf-8编码方式

汉字编码

  • GB2312
    GB 2312 或 GB 2312-80 是中国国家标准简体中文字符集。共收录 6763 个汉字,其中一级汉字 3755 个,二级汉字 3008 个。GB 2312 对任意一个图形字符都采用两个字节表示,并对所收汉字进行了“分区”处理,每区含有 94 个汉字/符号,分别对应第一字节和第二字节。这种表示方式也称为区位码
  • GBK
    GBK 即汉字内码扩展规范,共收入 21886 个汉字和图形符号。GBK 向下与 GB 2312 完全兼容,向上支持 ISO 10646 国际标准。GBK 采用双字节表示。
  • GB18030
    国家标准 GB 18030-2005《信息技术中文编码字符集》,是中华人民共和国现时最新的内码字集。GB 18030 与 GB 2312-1980 和 GBK 兼容,共收录汉字70244个。是一二四字节变长编码。
`data.frame`是R语言中最常用的结构之一,用于组织数据集。它类似于表格或数据库的行和列形式,主要用于统计分析、数据可视化等任务。以下是关于`data.frame`的一些基本特性: ### 数据帧的主要特点: 1. **双维结构**:`data.frame`是一个二维表型的数据结构,每一行代表一条观测记录,而每列表示一个变量。 2. **异构支持**:`data.frame`可以容纳不同类型的数据,并将它们放在不同的列中,例如数字、字符串、日期时间或其他类型的向量。 3. **命名属性**:每个变量(列)都有名称,这使得引用特定变量变得简单明了,无需像数组那样通过索引来访问。 4. **列顺序自由**:虽然有名称,但列的物理顺序并不是固定的,可以根据需要重新排列。 5. **灵活的操作**:支持多种内置函数和操作,如合并、筛选、排序、分组聚合等,方便数据分析流程。 6. **兼容性好**:几乎所有的R包都支持数据帧作为输入和输出,使得数据处理和分析非常便捷。 ### 创建`data.frame`的基本语法: ```r df <- data.frame( column1 = c(1, 2, 3), column2 = c("apple", "banana", "cherry"), row.names = c(1L, 2L, 3L) ) # 或者使用现有的数据向量直接创建数据框 df <- data.frame(column1 = c(1, 2, 3), column2 = c("a", "b", "c")) ``` ### `data.frame`的常用操作: - **获取信息**:`str()`查看数据框架的结构;`dim()`查看行列数。 - **选择元素**:`df$column_name`选取某一列;`df[row_index, ]`或`df[, col_index]`分别选取指定行或列。 - **修改元素**:`df$column_name <- new_values` - **连接数据**:使用`merge()`函数与其他数据帧连接。 - **过滤数据**:`subset(df, condition)`基于条件筛选数据。 ### 相关问题: 1. 怎样在R中对`data.frame`进行排序? 2. R中的`data.frame`如何进行合并? 3. `data.frame`如何处理缺失值(NA)? 这样的问答可以帮助理解和应用`data.frame`这一强大的工具在R编程中的实际场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值