拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 在R方法中,在标记具有多个级别的因子时减少可能的错误

在R方法中,在标记具有多个级别的因子时减少可能的错误

白鹭 - 2022-03-03 1972 0 0

我有一个包含 75 个级别的变量,我想对其进行格式化。但是,我发现如果不错误地格式化级别就很难做到这一点。

如您所知,使用其水平创建一个因子是这样完成的:

df$f <- factor(df$f, levels=c('a','b','c'),
  labels=c('Treatment A','Treatment B','Treatment C'))

有没有办法对这个进行不同的编码,以便标签写在关卡旁边。我正在寻找这种结构中的代码:

'a' = 'Treatment A'
'b' = 'Treatment B'
'c' = 'Treatment C'

谢谢转发

uj5u.com热心网友回复:

您可以为您的级别标签对使用命名矢量并转换为如下因子:

foo <- c("a", "c", "b")

rec <- c(
  "a" = "Treatment A",
  "b" = "Treatment B",
  "c" = "Treatment C"
)

factor(foo, levels = names(rec), labels = rec)
#> [1] Treatment A Treatment C Treatment B
#> Levels: Treatment A Treatment B Treatment C

uj5u.com热心网友回复:

如果您有很长的等价串列,通常将其作为单独的档案包含在内是一个很好的作业流程,例如icdcodes.csv包含

code,descr
C00.0,Upper lip cancer
C00.1,Lower lip cancer

然后你可以这样做:

codeinfo <- read.csv("icdcodes.csv")
factor(foo, levels = codeinfo$code, labels = codeinfo$descr

理想情况下,您甚至可以直接从 CDC 获得 ICD10 描述(尽管实际上这可能行不通,因为描述比您的要长,例如 C000 是“外上唇恶性肿瘤”,而不是“上唇癌”。 ..) [另请注意,CDC 档案没有点分隔符]

icd_url <- "https://ftp.cdc.gov/pub/Health_Statistics/NCHS/Publications/ICD10CM/2022/icd10cm_codes_2022.txt"
codeinfo <- read.fwf(icd_url, widths = c(8,100))
names(codeinfo) <- c("code", "descr")
codeinfo$code <- trimws(codeinfo$code)
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *