r - 将值切换到新列中的标签
问题描述
我得到了一列标记值。姑且称之为国家吧。当我运行时:
attr(dat[["Country"]], "labels")
我得到下一张桌子:
USA Germany France UK Spain India Saudi Arabia
1 2 3 4 5 6 7
现在我得到了一列未标记的新 int 值。让我们称之为新国家。我想将这些 int 值更改为原始 Country 列的标签。换句话说,我想以一种有效的方式摆脱这种情况......
3 2 2 1 5 4
对这个……
法国 德国 德国 美国 西班牙 英国
解决方案
问题是数据框有一列,Country
,具有属性"labels"
集。反过来,这个只是一个向量的属性具有属性"names"
集。所以得到的步骤"names"
是"labels"
:
- 获取
"labels"
列的Country
; - 获取
"names"
标签向量的 ; - 提取与索引向量向量对应的名称
i
。
首先读取发布的数据。
nms <- scan(text = "USA Germany France UK Spain India 'Saudi Arabia'",
what = character())
i <- scan(text = "3 2 2 1 5 4")
现在创建一个数据集示例。
labs <- setNames(1:7, nms)
dat <- data.frame(Country = sample(letters, 7))
attr(dat[["Country"]], "labels") <- labs
并按照上述步骤提取问题的要求。
labsCountry <- attr(dat[["Country"]], "labels")
names(labsCountry)[i]
#[1] "France" "Germany" "Germany" "USA" "Spain" "UK"
或单线:
names(attr(dat[["Country"]], "labels"))[i]
#[1] "France" "Germany" "Germany" "USA" "Spain" "UK"
要查看这不依赖于标签的值,请创建第二个示例。
labs2 <- setNames(101:107, nms)
attr(dat[["Country"]], "labels") <- labs2
尽管"labels"
它们不同,但相同的说明有效:
attr(dat[["Country"]], "labels")
# USA Germany France UK Spain India Saudi Arabia
# 101 102 103 104 105 106 107
labsCountry <- attr(dat[["Country"]], "labels")
names(labsCountry)[i]
推荐阅读
- microsoft-teams - 在 Microsoft Teams 中从移动设备上的消息启动操作?
- reactjs - 找不到 Apollo Client 实例
- c++ - Qt:长期适应未修改/独立于显示分辨率运行应用程序
- php - 在 Sylius 中过滤由发货网格处理的数据
- reactjs - React redux - “超出最大更新深度”错误
- python-3.x - 通过将字典放在列表中来破坏我的代码。我究竟做错了什么?
- javascript - 使用 promise 模块连接 mongodb 时出错
- google-apps-script - 使用 Google Apps 脚本为 Google Docs 中表格单元格的第一行设置样式
- java - 尽管在 spring-boot-maven-plugin 中配置了排除,但日志依赖项仍包含在 lib 文件夹中
- oracle - Oracle 数据库 12c“压缩查询”选项