如何从数据帧 B 中检索数据帧 A 中数据的标签和值信息

问题描述

编辑(为了更精确):我有一个 csv 文件,其中存储了数据帧 A 中每个变量的标签和值信息。
在原始数据帧 A 中有 250 个变量。出于演示目的,我有

  1. 将数据框 A 从 250 个变量减少到 7 个变量。
  2. 将信息作为数据帧 B 加载到 csv 文件中,并减少到 7 个变量。

我的具体问题: 如何将每个代码的数据帧 B 中的信息(例如标签和值)分配给数据帧 A 中的变量。 到目前为止,我可以通过一个变量来实现我的目标。

我希望问题现在更具体。我不知道我的思维方式是否完全错误。 将不胜感激任何帮助。

我的数据框 A:

structure(list(a = c(2L,7L,8L,5L,10L,1L,6L,9L,3L,4L),b = c("29.06.2016","18.07.2016","26.07.2016","04.08.2016","12.08.2016","24.08.2016","26.08.2016","27.08.2016","27.08.2016"),c = c("A","A","B","C","C"),d = c(4795L,7242L,2246L,7914L,9910L,4279L,9174L,8329L,8310L,4799L),e = c(6L,11L,2L,12L,f = c(1973L,1933L,1977L,1969L,1960L,1950L,1963L,1967L,1951L,1970L),g = c(2L,1L)),row.names = c(NA,-10L),class = "data.frame")

我的数据框 B(标签和值的信息):

structure(list(
  variable = c("a","b","c","d","e","f","g"),class = c("number","string","number","number"),label = c("AAAA","BBBB","CCCC","dddd","EEEE","FFFF","GGGG"),values = c("","","@0@,@k.A.@,@1@,@Januar@,@2@,@Februar@,@3@,@März@,@4@,@April@,@5@,@Mai@,@6@,@Juni@,@7@,@Juli@,@8@,@August@,@9@,@September@,@10@,@Oktober@,@11@,@November@,@12@,@Dezember@",@female@,@male@")),-7L),class = "data.frame")


期望输出

enter image description here

解决方法

您可以尝试以下方法。但是,如果您事先将 eg 作为因子读入会更容易。然后,您无需使用 as.factor 转换它们。

library(lubridate)

dfB$label
dfC <- setNames(dfA,dfB$label)

# use a random date to generate level
a <- month(ymd(210101) + months(0:11),label = TRUE)

dfC$EEEE <- as.factor(dfC$EEEE) 
levels(dfC$EEEE) <- a


dfC$GGGG <- as.factor(dfC$GGGG)
levels(dfC$GGGG) <- c("female","male")