r - 根据 c=字符数替换列中的值
问题描述
我有一个包含一列的数据框:
V1
123
14321
1
65433
56
我想用 2 和 1 替换该列中的每个值,具体取决于值中字符的离子数:如果有 < 3 个字符,则为 1,如果 >= 3 则为 2。所以所需的结果是:
V1
2
2
1
2
1
我怎么能这样做?我试过这个,但没有奏效:
df$V1 <- with(df, ifelse(nchar(V1) < 3, 0, 1))
解决方案
我们可以强制转换为整数
df$V1 <- +(nchar(df$V1) >=3)
df$V1
#[1] 1 1 0 1 0
如果该列是factor
,nchar
则将不起作用。它需要转换为character
df$V1 <- +(nchar(as.character(df$V1)) >=3)
数据
df <- structure(list(V1 = c(123L, 14321L, 1L, 65433L, 56L)),
class = "data.frame", row.names = c(NA,
-5L))
推荐阅读
- c# - 将字符串转换为字节数组,反之亦然
- stripe-payments - 如何通过电子邮件 usign stripe API 将 pdf 附件中的发票发送给客户?
- nuget - 迁移到 Win 2016 后的 Nuget 服务器问题
- netlogo - 如何在代理上划分全局变量统一
- python - 如何将自己的图像输入 Google Cloud Datalab Notebook?
- node.js - 从函数中获取价值,然后使其成为全局
- javascript - 使用 img 标签创建文本节点的子字符串时防止下载图像
- javascript - “未找到匹配记录”,引导表结果超过 10 万条记录
- docker - `docker build` 命令挂了很长时间,其他命令工作正常
- postgresql - 当 Google Cloud SQL postgres 服务器升级(到更大的机器)花费的时间比“几分钟”长得多时该怎么办?