将 csv 导入具有空因子和缺失因子水平的 R

importing csv into R with empty factors and missing factor levels

我在 csv 文件中有一个包含分数和类别的数据集

VAR1_SCORE  VAR1_CAT    VAR2_SCORE  VAR2_CAT    VAR3_SCORE  VAR3_CAT 
80          MID         60         LOW      
80          MID         100        HIGH 
90          HIGH        90         HIGH               

我正在读取上述格式的 csv 文件。 请注意*:VAR1_CAT 没有低级别定义

导入时我想实现,

  1. 为所有类别定义相同的因子水平 contains('_cat')
  2. 可能有像 VAR3_scores 这样的空变量。这应该读入为数字而不是逻辑
  3. 空变量 (VAR3_CAT / VAR1_CAT) 应具有相同的因子水平 (HIGH - MID -LOW)

例如用read.csv读取数据,之后再用一些tidyverse

library(tidyverse)
df <- df %>% 
  mutate_at(vars(ends_with("CAT")), ~factor(., levels = c("LOW", "MID", "HIGH")))

显示级别:

select(df, ends_with("CAT")) %>% 
  map(levels)
$VAR1_CAT
[1] "LOW"  "MID"  "HIGH"

$VAR2_CAT
[1] "LOW"  "MID"  "HIGH"

$VAR3_CAT
[1] "LOW"  "MID"  "HIGH"

我们也可以使用mutate across

library(dplyr)
df <- df %>%
         mutate(across(ends_with('CAT'), factor, levels = c("LOW", "MID", "HIGH")))