Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在数据框的数字代码上附加标签,以有效利用系数_R_Loops_Dataframe_Labels_Factors - Fatal编程技术网

R 在数据框的数字代码上附加标签,以有效利用系数

R 在数据框的数字代码上附加标签,以有效利用系数,r,loops,dataframe,labels,factors,R,Loops,Dataframe,Labels,Factors,我有一个excel中的数据,我读取该数据并将其存储在一个名为“data”的数据框中。类似地,我通过名称映射将每个变量及其代码的值标签放在单独的表中。我也阅读了这张表,并以“地图”的名称将其存储为数据框 该文件的链接为- 以下是阅读表格的代码- library("readxl") data <- read_excel("data_v1.xlsx",sheet = "data") map <- read_excel("data_v1.xlsx",sheet = "map") 库(“re

我有一个excel中的数据,我读取该数据并将其存储在一个名为“data”的数据框中。类似地,我通过名称映射将每个变量及其代码的值标签放在单独的表中。我也阅读了这张表,并以“地图”的名称将其存储为数据框

该文件的链接为-

以下是阅读表格的代码-

library("readxl")
data <- read_excel("data_v1.xlsx",sheet = "data")
map <- read_excel("data_v1.xlsx",sheet = "map")
库(“readxl”)

数据概念上你需要这样的东西

city_labels <- map$City_desc[match(data$City, map$City)]

city\u labels我会写一个for循环来完成这个重复的任务。需要检查数据和映射中的变量名是否相同。您的数据不可用,但我觉得下面应该可以

for (i in names(data)[which(is.element(names(data),names(map)))]){
  data[[i]] <- factor(data[[i]],
                                 levels = na.omit(map[[i]]),
                                 labels = na.omit(map[[paste0(i,"_desc")]]))
}
for(i in names(data)[which(is.element(names(data)),names(map))]{

数据[[i]]名称
Brand desc
违反了map中的键值具有后缀
\u desc
的模式。这是贯穿始终的情况还是您的示例中的一个例外?您好,Roman,是的,您上面的评论是正确的,它应该是“Brand\u desc”。您的解决方案几乎就在那个里,但它也将变量的级别转换为特许标签。如果您检查级别,例如Q1,它将是“同意”、“都不同意”、“不同意”而不是1,2,3…由于级别是字符,我无法生成任何平均值/标准差等。例如,我想生成频率+平均值的交叉表,但它无法生成平均值。我想如果通过某种方式,我们可以使用代码变量和“_desc”的组合映射文件中的变量它可能会解决问题。建议。哦,我明白了。但我不会在分析中将分类数据视为数字。您可以尝试将其作为有序类别进行分析,例如在Rice&Gaines中。R不允许您对分类数据执行数字操作,这不是一个好的做法。
new_dat <- data.frame(lapply(names(data), getLabels))
names(new_dat) <- names(data)
new_dat
for (i in names(data)[which(is.element(names(data),names(map)))]){
  data[[i]] <- factor(data[[i]],
                                 levels = na.omit(map[[i]]),
                                 labels = na.omit(map[[paste0(i,"_desc")]]))
}