在 R 中对数据进行分类

2023-11-30

我试图根据数据类型将我的数据分类为不同的组。我的数据和代码如下:

bank    ROE
bank1   0.73
bank2   0.94
bank3   0.62
bank4   0.57
bank5   0.31
bank6   0.53
bank7   0.39
bank8   0.01
bank9   0.16
bank10  0.51
bank11  0.84
bank12  0.18

sob <- c('bank1', 'bank2','bank3',)
fob <- c('bank4','bank5', 'bank6')
jov <- c('bank7', 'bank8','bank9', 'bank10','bank11')

test$type <- ifelse(test$bank == sob, 1, ifelse(test$bank == fob, 2, ifelse(test$bank == jov, 3,     4)))
test

但是,此代码不起作用,因为类别显示错误,我收到此警告:

Warning messages:
1: In is.na(e1) | is.na(e2) :
longer object length is not a multiple of shorter object length
2: In `==.default`(test1$bank, jov) :
longer object length is not a multiple of shorter object length

谁能告诉我我做错了什么以及我应该做什么才能改正?

Thanks


您应该使用%in%- 运算符而不是身份 - 您在这里与向量进行比较。

Like so:

test$type <- ifelse(test$bank %in% sob, 1, ifelse(test$bank %in% fob, 2, ifelse(test$bank %in% jov, 3,     4)))

> test
     bank  ROE type
1   bank1 0.73    1
2   bank2 0.94    1
3   bank3 0.62    1
4   bank4 0.57    2
5   bank5 0.31    2
6   bank6 0.53    2
7   bank7 0.39    3
8   bank8 0.01    3
9   bank9 0.16    3
10 bank10 0.51    3
11 bank11 0.84    3
12 bank12 0.18    4

或者,为了避免繁琐的 if-else 结构,您可以对因子的分类重置级别。

首先复制银行变量 测试$类型

然后,使用上面定义的向量(sob、fob、job)重新设置级别。注意最后一步,'other'被设置为剩余值,因为其他向量中未定义bank12。

levels(test$type) <- list('sob' = sob,
                          'fob' = fob,
                          'jov' = jov,
                          'other' = 'bank12')

导致

> test
     bank  ROE  type
1   bank1 0.73   sob
2   bank2 0.94   sob
3   bank3 0.62   sob
4   bank4 0.57   fob
5   bank5 0.31   fob
6   bank6 0.53   fob
7   bank7 0.39   jov
8   bank8 0.01   jov
9   bank9 0.16   jov
10 bank10 0.51   jov
11 bank11 0.84   jov
12 bank12 0.18 other
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中对数据进行分类 的相关文章

  • 将嵌入其他文本的长州名称转换为两个字母的州缩写

    我的目标是识别以具有其他文本的字符向量写出的美国各州 并将各州转换为缩写形式 例如 北卡罗来纳州 到 北卡罗来纳州 如果向量只有长形式的状态名称 那就很简单 但是 我的向量在随机位置有其他文本 如示例 states 中所示 states l
  • 使用 R 中的 reshape 函数处理多个匹配行

    所以我有以下数据框df X Y Z ID value 1 0 20 135 a 20 2 0 20 135 a 30 3 0 20 135 b 40 4 20 104 20 c 10 5 20 104 20 b 15 我想要的最终输出 X
  • 使用 ``magrittr::`%>%` `` 时 magrittr 管道出错

    不管出于什么原因我在玩magrittr管道语法 并遇到一个奇怪的错误 当您 scope 显式限定调用时发生 gt 我知道使用下面的语法会破坏管道的用途 但我很好奇为什么会发生错误 第一次致电sum按预期工作并输出1 第二次调用会导致错误 E
  • 不同元素的ggplot字体大小

    我知道在创建 ggplot 图后我可以使用theme get 返回所有主题元素的详细信息 这对于弄清楚诸如此类的事情非常有帮助strip text x等等 但我有两件事无法弄清楚 1 在下面的ggplot图形中 代表短语 被土拨鼠卡住的木头
  • 查找表中第三个四分位数以上的频率

    我有一个大数据框架 对 57 个变量的超过 239k 观察值 其中包含一些疾病描述以及针对不同年龄段的人针对这些疾病使用的药物 我想在每种疾病描述的使用频率前四分之一中找到这些药物 为了制作一个可重现的示例 我创建了一个包含 1000 个观
  • R - Rstudio - 如果生成警告/错误,则使 R 播放声音

    我正在运行一个循环遍历股票对组合列表的脚本 偶尔 由于对组合之间的数据长度不同而产生错误 脚本会停止运行 我只是将不匹配的股票从考虑中删除 Error in model frame default formula stckY stckX 0
  • 加载 plyr 包时出现问题

    我使用 R 2 13 1 但未能成功尝试在 R 中加载包 plyr 1 6 我已将其手动安装到目录 R library 中 我的代码是 libPaths R library library plyr 我收到消息 库 plyr 中的错误 pl
  • selectInput 的动态数量

    我是闪亮的新手 所以这可能是一个非常基本的问题 我想编写一个闪亮的应用程序 其中用户输入 n 我们得到 n 个 selectInput 选项 但我无法做到这一点 基本上任何形式的 for 循环都不起作用 我尝试的代码如下 library s
  • 将 RMarkdown 文档编织为 Word 时方程式和引用丢失

    我不确定这个问题是否更适合LaTeX论坛 我将其发布在这里是因为我怀疑问题更多是关于knitr和 RMarkdown 相比于 LaTeX 我在 RStudio 中有以下 RMarkdown 文档 title Capricious Behav
  • R:从本地 tar.gz 安装 R 软件包时找不到“make”

    R 包ConvCalendar不再位于 Cran 存储库中 请参阅here https cran r project org web packages ConvCalendar index html 然而 因为我在之前的项目中大量使用了这个
  • dplyr:取消选择由给出的列

    如何取消选择中给出的列 自写函数的参数 我还需要在另一点选择列 因此只需使用 in 没有解决我的问题 任何解决方案表示赞赏 select 帮助者 操纵者quosures或表达方式 very simple example data test
  • 成对散点图;一对多[重复]

    这个问题在这里已经有答案了 有没有一种简洁的方法来创建pairs仅将一个变量与许多其他变量进行比较的图 换句话说 我可以只绘制标准的一行或一列吗 pairs不使用循环的散点图矩阵 融化你的数据 然后使用带有facet的ggplot libr
  • 使用不同的阈值替换多列中的值

    我有一个包含多个列的数据集 其中包含我想要转换为二进制的定量数据 为此 我想使用每列不同的阈值 Example Input antigen1 antigen2 antigen3 antigen4 1 215 421 2 12 2 1524
  • 使用shinyjs通过javascript在闪亮的应用程序中操作现有的Leaflet地图

    我有一个闪亮的应用程序 其中包含现有的传单地图 我希望能够在渲染后使用自定义 javascript 通过shinyjs包裹 一个最小的例子如下 app R packages library dplyr library leaflet lib
  • 基于列重复数据集中的行,但增加行[重复]

    这个问题在这里已经有答案了 我有一个数据集 其中包含项目名称 开始年份和合同期限 我需要将这个数据集开发成时间序列 例如 我的数据集中的一行是 项目 A 开始年份 2003 年 合同期限 5 我想根据合同期限重复每一行 我的数据集如下所示
  • 如何很好地注释 ggplot2(手册)

    Using ggplot2我通常使用geom text和类似的东西position jitter注释我的情节 然而 对于一个漂亮的情节 我经常发现手动注释是值得的 像下面这样 data2 lt structure list type str
  • 在R中使用plotly在轴标题中换行和下标

    我刚开始使用plotly对于 R 中的一些交互式散点图 并且在轴标签上遇到困难 通常我设计我的情节ggplot2然后使用ggplotly函数来转换它们 但这有时由于某种原因非常慢 所以我想直接在中创建我的图plotly 我现在尝试更改轴标题
  • 如何测试字符串中的前三个字符是r中的字母还是数字?

    下面给出了我拥有的数据集的示例 请注意 总数据集中我有超过两列 ID X 1 MJF34 2 GA249D 3 DEW235R 4 4SDFR3 5 DAS3 我想测试 X 中的前三个字符是否是字母 如果是 那么我想替换该值以仅显示前三个字
  • R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

    我有一个 4 5MB 9 223 136 行 的文件 其中包含以下信息 0 0 0 0147938 3 67598e 07 0 0226194 7 35196e 07 0 0283794 1 10279e 06 0 033576 1 470
  • 是否有 R 函数可以将这些数据从长形重塑为宽形?

    数据现在看起来如何 Coach ID Student score 1 A 8 1 B 3 2 A 5 2 B 4 2 C 7 看起来像这样 Coach ID Student score student 2 score 2 student 3

随机推荐