考虑这个样本数据:
structure(list(myNumbers = c(1, 2, 3), myLetters = structure(1:3, .Label = c("a",
"b", "c"), class = "factor")), .Names = c("myNumbers", "myLetters"
), row.names = c(NA, -3L), class = "data.frame")
以及数据的新列名称向量,如:
c("newNumbers", "newLetters")
我的工作流程涉及通过询问用户是否应将现有列名称替换为预定义的标准名称来创建此新列名称的向量。结果是具有列名替换的向量。这是必要的,因为我喜欢准备来自不同来源(具有相似内容但更改变量名称)的数据,以便以标准化方式进行处理。
工作流程的下一步是进行必要的数据类型转换。例如,考虑列myLetters
(现在是因子)将成为字符,并在结果DF中称为newLetters
。我想将所需的数据类型链接到标准列名称。在这种情况下,工作流应使用类似(伪代码!)的映射:
newNumbers -> as.numeric ()
newLetters -> as.character()
然后,我想使用此映射(将与标准列名一起存储)以尽可能自动化数据类型转换。所以这个过程将是:
检查列名称 - >找到正确的数据类型(因此映射) - >转换为给定的数据类型。
我可以使用colwise
包的plyr
函数为列列表执行类型转换。但是,这不适用于上述映射。每个名称的映射是必要的,因为可能会丢失某些列,或者会有其他列不会获得标准名称。
我该如何做到这一点?