个性化阅读
专注于IT技术分析

R排序和子集因子

点击下载

本文概述

如果你想参加我们的《金融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是有序因子。

如果你想从本课程中学习更多信息, 请点击这里。

赞(0)
未经允许不得转载:srcmini » R排序和子集因子

评论 抢沙发

评论前必须登录!