将 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 没有低级别定义
导入时我想实现,
- 为所有类别定义相同的因子水平 contains('_cat')
- 可能有像 VAR3_scores 这样的空变量。这应该读入为数字而不是逻辑
- 空变量 (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")))
我在 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 没有低级别定义
导入时我想实现,
- 为所有类别定义相同的因子水平 contains('_cat')
- 可能有像 VAR3_scores 这样的空变量。这应该读入为数字而不是逻辑
- 空变量 (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")))