📌  相关文章
📜  替换 R 数据框中因子列的内容

📅  最后修改于: 2022-05-13 01:55:02.793000             🧑  作者: Mango

替换 R 数据框中因子列的内容

在本文中,我们将看到如何在 R 编程语言中替换数据帧中因子列的内容。

示例 1:替换因子列的内容

最初,使用 as 的显式转换将因子列转换为字符列。 R 中的字符() 方法。此方法将指定列转换为字符类型,该类型可以包含重复的元素值,而不是所有副本都属于同一级别。

然后用新值替换此列的旧单元格值。然后使用 as.factor() 方法将列再次恢复为因子类型。

可以使用 levels() 方法打印数据框列的级别。如果我们显示替换前后的级别,它们会有所不同。

R
# creating a data frame
data_frame <- data.frame(col1 = factor(c(1,2,1,5,2)), 
                         col2 = factor(c("a","b","a","c","d"))
                         )
print("Original DataFrame")
print (data_frame)
  
print ("Original DataFrame Levels")
print(levels(data_frame$col1))
  
# replicating the data frame
data_temp <- data_frame
  
# replacing the content of data frame
data_temp$col1 <- as.character(data_frame$col1)
data_temp$col1[3] <- 4
data_temp$col1 <- as.factor(data_temp$col1)
  
print("Modified DataFrame")
print(data_temp)
  
print ("Modified DataFrame Levels")
print(levels(data_temp$col1))


R
# creating a data frame
data_frame <- data.frame(col1 = factor(c(1,2,1,5,2)), 
                         col2 = factor(c("a","b","a","c","d"))
                         )
print("Original DataFrame")
print (data_frame)
  
print ("Original DataFrame Levels")
print(levels(data_frame$col2))
  
# replicating the data frame
data_temp <- data_frame
  
# replacing the level of data frame
levels(data_temp$col2)[levels(data_temp$col2) == "a"] <- "e"
print("Modified DataFrame")
print(data_temp)
  
print ("Modified DataFrame Levels")
print(levels(data_temp$col2))


输出:

示例 2:替换因子列的级别

也可以使用 levels() 方法修改数据框的级别。可以使用数据框索引方法比较旧的级别值,然后分配一个新值。此级别的所有出现都更改为新分配的级别。在这种情况下,级别的数量在数量上保持不变,但在价值上发生了变化。

电阻

# creating a data frame
data_frame <- data.frame(col1 = factor(c(1,2,1,5,2)), 
                         col2 = factor(c("a","b","a","c","d"))
                         )
print("Original DataFrame")
print (data_frame)
  
print ("Original DataFrame Levels")
print(levels(data_frame$col2))
  
# replicating the data frame
data_temp <- data_frame
  
# replacing the level of data frame
levels(data_temp$col2)[levels(data_temp$col2) == "a"] <- "e"
print("Modified DataFrame")
print(data_temp)
  
print ("Modified DataFrame Levels")
print(levels(data_temp$col2))

输出: