本文概述
如果你想参加我们的《金融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 AA A BBB AA BBB 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 AA A BBB AA BBB A
Levels: BBB < A < AA < AAA
credit_factor[-1]
[1] AA A BBB AA BBB A
Levels: BBB < A < AA < AAA
R删除了第一个位置的AAA键, 但是却留下了AAA级!如果要绘制此图, 最终将在右侧显示条形图。更好的计划是告诉R完全降低AAA级别。为此, 添加drop = TRUE:
credit_factor[-1, drop = TRUE]
[1] AA A BBB AA BBB 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. of 3 variables:
$ company : Factor w/ 2 levels "A", "B": 1 1 2
$ cash_flow: num 100 200 300
$ year : num 1 3 2
看看公司栏如何转换成因子? R在创建数据帧时的默认行为是将所有字符转换为因子。这使无数的R新手都感到头疼, 他们想弄清楚为什么他们的字符列无法正常工作, 但你却无法正常工作!你将做好准备!
要关闭此行为:
cash <- data.frame(company, cash_flow, year, stringsAsFactors = FALSE)
str(cash)
'data.frame': 3 obs. of 3 variables:
$ company : chr "A" "A" "B"
$ cash_flow: num 100 200 300
$ year : num 1 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是有序因子。
如果你想从本课程中学习更多信息, 请点击这里。
评论前必须登录!
注册