如何在不丢失变量标签的情况下将所有因子变量转换为大型数据框中的数字变量?

比斯瓦吉特卡尔

我正在尝试在大型数据框中将所有因子变量转换为数值变量。转换时,变量标签(变量的详尽名称)在新数据框中丢失。有什么简单的方法可以将因子变量隐式转换为数据帧中的数字变量而不会丢失变量。示例代码如下。谢谢。

v1 <- c('1','4','5')
v2 <- c('21000', '23400', '26800')
v3 <- c('2010','2008','2007')
data <- data.frame(v1, v2, v3)
library(Hmisc)
label(data$v1) <- "Number"
label (data$v2) <- "Value"
label (data$v3) <- "Year"

data[] <- as.numeric(factor(as.matrix(data)))
View(data)
杰伊

您可以预先保存属性并还原它们。

## save labels
attr.data <- lapply(dat, attr, "label")  

## convert to numeric and restore labels
dat[] <- Map(function(x, y) `attr<-`(as.numeric(levels(x))[x], "label", y), dat, attr.data)

第一步:

dat[] <- Map(function(x, y) 
  `attr<-`(as.numeric(levels(x))[x], "label", y), dat, Map(attr, dat, "label"))

说明

标签存储在属性(try attributes(data))中,可以使用attr及其名称进行访问标签属性的名称为"label",我们可以在转换期间捕获它们。Map以相应的方式处理列和属性,以确保分配了正确的标签。

结果

dat
#   v1    v2   v3
# 1  1 21000 2010
# 2  4 23400 2008
# 3  5 26800 2007

str(dat)
# 'data.frame': 3 obs. of  3 variables:
#   $ v1: num  1 4 5
# ..- attr(*, "label")= chr "Number"
# $ v2: num  21000 23400 26800
# ..- attr(*, "label")= chr "Value"
# $ v3: num  2010 2008 2007
# ..- attr(*, "label")= chr "Year"

数据

dat <- structure(list(v1 = structure(1:3, .Label = c("1", "4", "5"), class = c("labelled", 
"factor"), label = "Number"), v2 = structure(1:3, .Label = c("21000", 
"23400", "26800"), class = c("labelled", "factor"), label = "Value"), 
    v3 = structure(3:1, .Label = c("2007", "2008", "2010"), class = c("labelled", 
    "factor"), label = "Year")), row.names = c(NA, -3L), class = "data.frame")

旁注:我使用这里dat而不是data这里,因为dataR已经占用了它来加载特定的数据集。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不增加数据大小的情况下将熊猫中的分类变量转换为数值?

来自分类Dev

如何在不丢失C#中的数字值的情况下将int数字转换为char

来自分类Dev

如何在不丢失数据的情况下将MBR分区转换为GPT?

来自分类Dev

如何在不丢失数据的情况下将MBR HDD转换为GPT?

来自分类Dev

如何在不丢失索引的情况下转换熊猫中的数据框?

来自分类Dev

如何在保留R中的数字的同时将因子变量转换为数字

来自分类Dev

如何在不刷新页面的情况下将JQuery变量转换为模式窗口中的PHP变量

来自分类Dev

如何在不按名称调用的情况下打印所有变量及其函数值?

来自分类Dev

如何在不使用字典的情况下将字符串转换为python中的变量?

来自分类Dev

使用pdb调试Python时,如何在不指定每个变量的情况下打印所有变量值?

来自分类Dev

如何在不丢失回车符的情况下将文件内容分配给Makefile变量

来自分类Dev

如何在不声明不同变量的情况下将这些输入放入函数中

来自分类Dev

如何在没有列标题的情况下将pandas数据框转换为字典?

来自分类Dev

如何在不损失R精度的情况下将因子转换为浮点数?

来自分类Dev

将所有变量转换为有序因子

来自分类Dev

如何在不丢失数据的情况下将驱动器从ext4转换为NTFS?

来自分类Dev

doctrine2:如何在不丢失数据的情况下将一对多转换为多对多

来自分类Dev

如何在不丢失数据的情况下将属性xml转换为元素xml以在Access中导入

来自分类Dev

如何在不丢失数据的情况下将驱动器从ext4转换为NTFS?

来自分类Dev

如何在不丢失元数据的情况下将mp3转换为WAV?

来自分类Dev

如何在不丢失变量值的情况下使用多种形式?

来自分类Dev

在Excel VBA中,如何在“状态丢失”(不写入单元格或文件)的情况下持久保存关键变量?

来自分类常见问题

如何在不丢失前导零的情况下将String转换为Long

来自分类Dev

如何在不丢失段落的情况下将html转换为doc?

来自分类Dev

如何在不丢失列表结构的情况下将列表项转换为 unicode

来自分类Dev

如何在不更改变量的情况下递归

来自分类Dev

如何在不指定final的情况下访问变量?

来自分类Dev

如何在不添加额外数字的情况下将float转换为double?

来自分类Dev

将具有k格式数字的因子列转换为数字而不丢失任何数据

Related 相关文章

  1. 1

    如何在不增加数据大小的情况下将熊猫中的分类变量转换为数值?

  2. 2

    如何在不丢失C#中的数字值的情况下将int数字转换为char

  3. 3

    如何在不丢失数据的情况下将MBR分区转换为GPT?

  4. 4

    如何在不丢失数据的情况下将MBR HDD转换为GPT?

  5. 5

    如何在不丢失索引的情况下转换熊猫中的数据框?

  6. 6

    如何在保留R中的数字的同时将因子变量转换为数字

  7. 7

    如何在不刷新页面的情况下将JQuery变量转换为模式窗口中的PHP变量

  8. 8

    如何在不按名称调用的情况下打印所有变量及其函数值?

  9. 9

    如何在不使用字典的情况下将字符串转换为python中的变量?

  10. 10

    使用pdb调试Python时,如何在不指定每个变量的情况下打印所有变量值?

  11. 11

    如何在不丢失回车符的情况下将文件内容分配给Makefile变量

  12. 12

    如何在不声明不同变量的情况下将这些输入放入函数中

  13. 13

    如何在没有列标题的情况下将pandas数据框转换为字典?

  14. 14

    如何在不损失R精度的情况下将因子转换为浮点数?

  15. 15

    将所有变量转换为有序因子

  16. 16

    如何在不丢失数据的情况下将驱动器从ext4转换为NTFS?

  17. 17

    doctrine2:如何在不丢失数据的情况下将一对多转换为多对多

  18. 18

    如何在不丢失数据的情况下将属性xml转换为元素xml以在Access中导入

  19. 19

    如何在不丢失数据的情况下将驱动器从ext4转换为NTFS?

  20. 20

    如何在不丢失元数据的情况下将mp3转换为WAV?

  21. 21

    如何在不丢失变量值的情况下使用多种形式?

  22. 22

    在Excel VBA中,如何在“状态丢失”(不写入单元格或文件)的情况下持久保存关键变量?

  23. 23

    如何在不丢失前导零的情况下将String转换为Long

  24. 24

    如何在不丢失段落的情况下将html转换为doc?

  25. 25

    如何在不丢失列表结构的情况下将列表项转换为 unicode

  26. 26

    如何在不更改变量的情况下递归

  27. 27

    如何在不指定final的情况下访问变量?

  28. 28

    如何在不添加额外数字的情况下将float转换为double?

  29. 29

    将具有k格式数字的因子列转换为数字而不丢失任何数据

热门标签

归档