R排序和子集因子

本文概述

  • 创建有序因子
  • 概述视频订购和子集因子。
  • 子集因子
  • stringsAsFactors
如果你想参加我们的《金融R入门》课程, 请点击以下链接。
创建有序因子查看在右侧创建的图。看起来不错, 但请看一下条形图的顺序!创建因子时未指定任何顺序, 因此, 当R尝试绘制因子时, 它将水平按字母顺序放置。到现在为止, 你已经知道有信用评级命令了, 你的地块应该反映出这一点!
提醒一下, 信用等级从风险最低到最高的顺序是:
AAA, AA, A, BBB, BB, B, CCC, CC, C, D

要订购因子, 有两种选择。
创建因子时, 请指定ordered = TRUE, 并按从最小到最大的顺序添加唯一的级别:
credit_rating < - c("AAA", "AA", "A", "BBB", "AA", "BBB", "A")credit_factor_ordered < - factor(credit_rating, ordered = TRUE, levels = c("AAA", "AA", "A", "BBB"))

对于现有的无序因子, 例如credit_factor, 请使用ordered()函数:
ordered(credit_factor, levels = c("AAA", "AA", "A", "BBB"))

两种方式都会导致:
credit_factor_ordered[1] AAA AAABBB AABBB A Levels: AAA < AA < A < BBB

请注意< 指定以前不存在的级别的顺序!
使用说明
  • 字符向量credit_rating在你的工作空间中。
  • 结合使用credit_rating的unique()函数仅打印字符向量中的唯一单词。这些将成为你的等级。
  • 使用factor()创建credit_rating的有序因子, 并将其存储为credit_factor_ordered。请确保按照风险从最小到最大列出级别!
  • 绘制credit_factor_ordered并记下条的新顺序。
如果这有意义, 请继续进行下一个练习!如果没有, 这是一个概述视频。
概述视频订购和子集因子。子集因子你可以像对向量进行子集化一样对子集进行子集化。与往常一样, []是关键!但是, 当你想从分析中删除因子水平时, R具有一些有趣的行为。例如, 如果你想从投资组合中删除AAA债券怎么办?
credit_factor[1] AAA AAABBB AABBB A Levels: BBB < A < AA < AAAcredit_factor[-1][1] AAABBB AABBB A Levels: BBB < A < AA < AAA

R删除了第一个位置的AAA键, 但是却留下了AAA级!如果要绘制此图, 最终将在右侧显示条形图。更好的计划是告诉R完全降低AAA级别。为此, 添加drop = TRUE:
credit_factor[-1, drop = TRUE][1] AAABBB AABBB A Levels: BBB < A < AA

那就是你想要的!
使用说明
  • 使用相同的数据, 从credit_factor的位置3和7除去” A” 键。现在, 不要使用drop = TRUE。将此分配给keep_level。
  • 绘制keep_level。
  • 现在, 再次从credit_factor中删除” A” , 但这一次使用drop = TRUE。将此分配给drop_level。
  • 绘制drop_level。
stringsAsFactors你还记得在现金数据框上使用str()时回到数据框一章吗?这是输出:
str(cash)'data.frame':3 obs. of3 variables: $ company: Factor w/ 2 levels "A", "B": 1 1 2 $ cash_flow: num100 200 300 $ year: num1 3 2

看看公司栏如何转换成因子? R在创建数据帧时的默认行为是将所有字符转换为因子。这使无数的R新手都感到头疼, 他们想弄清楚为什么他们的字符列无法正常工作, 但你却无法正常工作!你将做好准备!
要关闭此行为:
cash < - data.frame(company, cash_flow, year, stringsAsFactors = FALSE)str(cash)'data.frame':3 obs. of3 variables: $ company: chr"A" "A" "B" $ cash_flow: num100 200 300 $ year: num1 3 2

使用说明
  • 已经为你定义了两个变量credit_rating和bond_owners。 bond_owners是某些朋友姓名的字符向量。
  • 按此顺序从credit_rating和bond_owners创建一个名为bond的数据框, 并使用stringsAsFactors = FALSE。
  • 使用str()确认两列都是字符。
  • bond_owners不是有用的因子, 但credit_rating可能是有用的因子!在$债券中使用$创建一个新列, 该列由credit_rating作为正确排序的因子创建。
  • 再次使用str()确认credit_factor是有序因子。
【R排序和子集因子】如果你想从本课程中学习更多信息, 请点击这里。

    推荐阅读