r - 重命名R中一列中的所有值
问题描述
我有一个数据集 df,具有以下值:
ID Duration
abcdefghijklmnopqrstuvwxyz 1 sec
abcdefghijklmnopqrstuvwxyz1 0 sec
abcdefghijklmnopqrstuvwxyz2 0 sec
abcdefghijklmnopqrstuvwxyz3 1 sec
abcdefghijklmnopqrstuvwxyz4 0 sec
目标:我正在绘制直方图,但值太长了。我想将列 ID 中的值转换为较短的值,例如:
ID Duration
A 1 sec
B 0 sec
C 0 sec
D 1 sec
E 0 sec
为此,我是否必须指定并写出行中的每个值?(有100个)
rename.values(df, abcdefghijklmnopqrstuvwxyz="A")...
解决方案
如果不使用dplyr
,如果您想将列 ID 中的所有值重命名为较短的 ID(并假设您的所有 ID 都不同),您可以编写:
df$ID <- paste0("A",1:nrow(df))
替代方案:使用gsub
或者,如果您希望替换一个很长的模式(例如 abcdef....),您可以使用gsub
:
df$ID <- gsub("abcdefghijklmnopqrstuvwxyz","A",df$ID)
这样做的好处gsub
是,如果您有一个 ID 重复多次,它将保留此重复,因为它只会替换 ID 字符串的第一部分。
例子
a <- paste0(letters[1:26], collapse = "")
df <- data.frame(ID = paste0(a,1:100),
value = rnorm(100))
所以,你df
看起来像:
ID value
1 A1 2.6977546
2 A2 1.9434639
3 A3 0.4191808
4 A4 -0.1545246
5 A5 2.0112518
6 A6 0.5877203
...
ID
现在,如果您用以下命令替换字符串:
df$ID <- paste0("A",1:100)
或与gsub
:
df$ID <- gsub("abcdefghijklmnopqrstuvwxyz","A",df$ID)
你得到:
ID value
1 A1 2.6977546
2 A2 1.9434639
3 A3 0.4191808
4 A4 -0.1545246
5 A5 2.0112518
6 A6 0.5877203
...
因此,您以相同的顺序保存了所有列和值,您只需修改 ID 列。
推荐阅读
- angular - Angular 6 在两个不相关的组件之间传递数据
- vba - 具有计数功能并在单元格中搜索文本
- request - 如何在 EOS 中推送交易?
- php - OAuth2 , PHP 和 Quickbooks
- java - 骆驼缓存条目信息和配置
- html - 选择名称以 CSS 中特定字符串开头的所有元素
- ionic-framework - 错误:Angular AoT 构建失败。看上面的问题
- bazel - Bazel 通过一次调用构建多个目标架构?
- javascript - websocket.close() 函数继续运行后
- spring-integration - 在所有分区返回之前发生超时