R语言 如何把数据框架的列从因子转换为字符

R语言 如何把数据框架的列从因子转换为字符

在这篇文章中,我们将讨论如何在R编程语言中把数据框架列从因子转换为字符。一个数据框架可以有不同类型的列堆在一起,形成一个管状结构。对列的数据进行简单的修改以及数据类型之间的转换都可以在数据框架上进行。 R语言为我们提供了多种方法来模拟数据框架的列的数据类型转换。

方法1:使用 transform() 方法

transform()方法可以用来模拟在该方法的参数列表中指定的数据对象的修改。这些修改必须明确地保存到同一个数据框架或一个新的数据框架中。这个方法可以用来为数据添加新的变量或修改现有的变量。

语法: transform(data, value)

参数:

  • data: 要修改的数据对象
  • value: 要添加的值

最初,由sapply()方法返回的数据框架col3的类别是一个因子,在应用transform()方法时,它将改变为字符。在这个转换过程中,数据被保留下来。

例子

# declare a dataframe
# different data type have been
# indicated for different cols
data_frame <- data.frame(
                col1 = as.character(6:9), 
                col2 = factor(4:7), 
                col3 = factor(letters[1:4])
                )
  
print("Original DataFrame")
print (data_frame)
  
# indicating the data type of each 
# variable 
sapply(data_frame, class)
  
# converting factor type column to
# character
data_frame_col3 <- transform(
  data_frame, col3 = as.character(col3))
  
print("Modified col5 DataFrame")
print (data_frame_col3)
  
# indicating the data type of each variable 
sapply(data_frame_col3, class)
Bash

输出

[1] "Original DataFrame"
 col1 col2 col3
1    6    4    a
2    7    5    b
3    8    6    c
4    9    7    d
   col1     col2     col3
"factor" "factor" "factor"
[1] "Modified col5 DataFrame"
 col1 col2 col3
1    6    4    a
2    7    5    b
3    8    6    c
4    9    7    d
      col1        col2        col3
  "factor"    "factor" "character" 
Bash

方法2:使用dplyr包

dplyr包被用来执行数据操作和抽象。它是 tidyverse 包的一个子包,提供大量的内置函数。它可以用来执行数据突变,使用mutate_at()方法,将额外的变量作为现有变量的一个函数添加。

语法: mutate_at(.data, .vars, .funs)

参数:

  • .data : 要修改的数据
  • . var : 要修改的变量
  • . funs : 要在要修改的变量上应用的函数

最初,由sapply()方法返回的数据框架col2的类别是一个因子,在应用mutate_at()方法时,它将变为字符。在这个转换过程中,数据被保留下来。

例子

# declare a dataframe
# different data type have been
# indicated for different cols
library(dplyr)
data_frame <- data.frame(
  "col1" = as.character(6:9), 
  "col2" = factor(4:7), 
  "col3" = factor(letters[1:4])
)
  
print("Original DataFrame")
print (data_frame)
  
# indicating the data type of 
# each variable 
sapply(data_frame, class)
  
# converting factor type column 
# to character
data_frame <- data_frame%>%mutate_at(
  "col2", as.character)
  
print("Modified col2 DataFrame")
print (data_frame)
  
# indicating the data type of 
# each variable 
sapply(data_frame, class)
Bash

输出

[1] "Original DataFrame" 
> print (data_frame)   
  col1 col2 col3 
1    6    4    a
2    7    5    b 
3    8    6    c 
4    9    7    d 
col1     col2     col3  
"factor" "factor" "factor"  
[1] "Modified col2 DataFrame" 
   col1 col2 col3
1    6    4    a 
2    7    5    b 
3    8    6    c 
4    9    7    d        
col1        col2        col3     
"factor" "character"    "factor" 
Bash

方法 3: 使用 lapply() 方法

R中的lapply方法适用于对列表对象的操作,并返回一个与输入列表对象相同长度的列表对象。这个输出列表中的每个元素都是对列表中每个元素应用FUN的结果。

语法: lapply(X, FUN, …)

参数 :

  • df: 要进行修改的数据框架对象。
  • FUN: 要应用到数据框架中每个元素的函数。

lapply()方法在R中返回一个向量列表对象。然而,我们将这个结果的输出保存到数据框架变量的列表对象中,也就是data_frame[],它将列表隐含地转换为数据框架,消除了显式转换的需要。它将因子列向字符的转换应用于整个数据框架。因此,所有的列类型都改变为字符。

例子

# declare a dataframe
# different data type have been
# indicated for different cols
data_frame <- data.frame(
                col1 = as.character(6:9), 
                col2 = factor(c('tzx','hi','gfg','cse')), 
                col3 = factor(letters[1:4])
                )
  
print("Original DataFrame")
print (data_frame)
  
# indicating the data type of each 
# variable 
sapply(data_frame, class)
  
# converting factor type column to 
# character
data_frame[] <-lapply(data_frame, as.character)
print("Modified col5 DataFrame")
print (data_frame)
  
# indicating the data type of each variable 
sapply(data_frame, class)
Bash

输出

[1] "Original DataFrame"
 col1 col2 col3
1    6  tzx    a
2    7   hi    b
3    8  gfg    c
4    9  cse    d
   col1     col2     col3
"factor" "factor" "factor"
[1] "Modified col5 DataFrame"
 col1 col2 col3
1    6  tzx    a
2    7   hi    b
3    8  gfg    c
4    9  cse    d
      col1        col2        col3
"character" "character" "character" 
Bash

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程