R:根据列表在数据框中设置变量类型和级别

策马

我有一个这样的数据框:

df <- data.frame(
  v1 = sample(c("L1","L2"),5,replace = TRUE), 
  v2 = sample(c("F1","F3"),5,replace = TRUE),
  v3 = sample(seq(1,5),5,replace = T)
)

我想(1)根据命名列表设置变量的类型:

typs <- list("v1" = "factor", "v2" = "factor", "v3" = "numeric")

(2)设置因子变量的级别:

list.levels <-  list("v1" = c("L1","L2","L3"), "v2" = c("F1","F2","F3"))

理想情况下,我想使用一种通用方法,该方法可以应用于具有动态列数的数据帧。

弗里克先生

您只需要编写自己的函数即可进行清理。这是一种可能性

fix_data <- function(data, types=NULL, flevels=NULL) {
  if(!is.null(types) && length(types)>0) {
    data[,names(types)] <- Map(function(col, type) {
      if (type=="factor") {
        factor(data[[col]])
      } else if (type=="numeric") {
        as.numeric(data[[col]])
      } else {
        stop(paste("unsupported type:", type))
      }
    }, names(types), types)
  }
  if(!is.null(flevels) && length(flevels)>0) {
    data[,names(flevels)] <- Map(function(col, levels) {
      factor(data[[col]], levels=levels)
    }, names(flevels), flevels)
  }
  data
}

然后称它为fix_data(df, typs, list.levels)请注意,它返回一个新的data.frame,因此您可以覆盖原始数据或将其保存到新变量。

基本思想是循环遍历列表中的名称并进行正确的转换。我们Map用来遍历列表中的名称和值。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R:在数据框中定义因子的级别

来自分类Dev

根据R中名称的向量在数据框中设置名称

来自分类Dev

根据R中名称的向量在数据框中设置名称

来自分类Dev

子集和替换嵌套在数据框中的列表变量

来自分类Dev

在数据框中将列表拆分为R中的二进制变量

来自分类Dev

从R中的向量在数据框中设置组名

来自分类Dev

根据另一个数据框/列表在数据框中的列子集

来自分类Dev

如何将因子级别设置为它们在数据框中显示的顺序?

来自分类Dev

R:根据列表元素名称创建新的数据框变量

来自分类Dev

R:按列表在数据框中“过滤”列

来自分类Dev

根据现有变量在数据框中创建新变量

来自分类Dev

根据 R 中的字符变量分离数据框

来自分类Dev

根据变量值在数据框中查找最大值

来自分类Dev

根据另一个数据框中的值在数据框中创建列表列

来自分类Dev

在数据框中重新排序因子名称的级别

来自分类Dev

R:根据数据框中的列表计算单词的出现

来自分类Dev

根据熊猫中的groupby在数据框中添加和填充日期行

来自分类Dev

在R中的数据框列表中更改变量

来自分类Dev

R:将列表中每个列表的元素求和,然后在数据框中返回结果

来自分类Dev

如何在数据框的列表类型列2中搜索/比较列1的整数?

来自分类Dev

根据R中的特征向量在数据框中创建列

来自分类Dev

根据R中的多个范围在数据框中获取行

来自分类Dev

根据文本框和字符串在数据库中查询搜索

来自分类Dev

R-使用带for循环的其他变量在数据框中创建变量

来自分类Dev

R-使用带有for循环的其他变量在数据框中创建变量

来自分类Dev

在R中定义数据框列的级别

来自分类Dev

创建一个函数,根据给定的参数(如熊猫列表中的列表)在数据框中创建新行

来自分类Dev

根据其他两个变量在数据框中创建一个新变量

来自分类Dev

如何根据 R 中变量的不同级别创建不同的数据集?

Related 相关文章

  1. 1

    R:在数据框中定义因子的级别

  2. 2

    根据R中名称的向量在数据框中设置名称

  3. 3

    根据R中名称的向量在数据框中设置名称

  4. 4

    子集和替换嵌套在数据框中的列表变量

  5. 5

    在数据框中将列表拆分为R中的二进制变量

  6. 6

    从R中的向量在数据框中设置组名

  7. 7

    根据另一个数据框/列表在数据框中的列子集

  8. 8

    如何将因子级别设置为它们在数据框中显示的顺序?

  9. 9

    R:根据列表元素名称创建新的数据框变量

  10. 10

    R:按列表在数据框中“过滤”列

  11. 11

    根据现有变量在数据框中创建新变量

  12. 12

    根据 R 中的字符变量分离数据框

  13. 13

    根据变量值在数据框中查找最大值

  14. 14

    根据另一个数据框中的值在数据框中创建列表列

  15. 15

    在数据框中重新排序因子名称的级别

  16. 16

    R:根据数据框中的列表计算单词的出现

  17. 17

    根据熊猫中的groupby在数据框中添加和填充日期行

  18. 18

    在R中的数据框列表中更改变量

  19. 19

    R:将列表中每个列表的元素求和,然后在数据框中返回结果

  20. 20

    如何在数据框的列表类型列2中搜索/比较列1的整数?

  21. 21

    根据R中的特征向量在数据框中创建列

  22. 22

    根据R中的多个范围在数据框中获取行

  23. 23

    根据文本框和字符串在数据库中查询搜索

  24. 24

    R-使用带for循环的其他变量在数据框中创建变量

  25. 25

    R-使用带有for循环的其他变量在数据框中创建变量

  26. 26

    在R中定义数据框列的级别

  27. 27

    创建一个函数,根据给定的参数(如熊猫列表中的列表)在数据框中创建新行

  28. 28

    根据其他两个变量在数据框中创建一个新变量

  29. 29

    如何根据 R 中变量的不同级别创建不同的数据集?

热门标签

归档