r - 将 0 添加到字符列
问题描述
我有一个数据框,其中有一列字符值:
df1
Col1 Col2
A 1
B 2
C 11
D 101
E 1000
我有另一个数据集,它也包含字符值,但每个值都有 5 个数字,即使它是一个小数字,如下所示:
df2
Col1A Col2
F 00001
G 00002
H 00011
I 00101
J 01000
如何将 0 添加到 df1 以便我可以将两个数据框连接在一起?
预期输出:
df1
Col1 Col2 Col1A
A 00001 F
B 00002 G
C 00011 H
D 00101 I
E 01000 J
解决方案
数据:
read.table(text="Col1 Col2
A 1
B 2
C 11
D 101
E 1000", colClasses=c("character", "character"), header=TRUE) -> xdf1
read.table(text="Col1A Col2
F 00001
G 00002
H 00011
I 00101
J 01000", colClasses=c("character", "character"), header=TRUE) -> xdf2
0 依赖基础 R:
setNames(merge(
{ xdf1$Col3 <- sprintf("%05s", xdf1$Col2) ; xdf1 },
xdf2, by.x = "Col3", by.y = "Col2"
)[,c(2,1,4)], c("Col1", "Col2", "Col1A"))
## Col1 Col2 Col1A
## 1 A 00001 F
## 2 B 00002 G
## 3 C 00011 H
## 4 D 00101 I
## 5 E 01000 J
xdf1$Col3 <- NULL # to preserve the original data frame
推荐阅读
- javascript - yii 框架视图中的 javascript 验证电子邮件
- kotlin - 如何在不调用 setter 和 getter 的情况下访问 kotlin 中的变量
- linux - 如何在linux中重新绑定终端快捷方式
- google-apps-script - 如何重新提交或取消 Google 数据洞察合作伙伴连接器的提交请求?
- javascript - Google 登录 API 挂起并出现未捕获的错误无法从 URL 哈希获取父源
- regex - 如果以 02/03/04/07/08 开头,电话号码正则表达式应严格允许 10 个字符
- apache - 在 Apache 2.4 中启用 http/2 不起作用
- c - 从命令行 c 运行程序的特定部分
- android - Firestore ServerTimestamp 有时在模型中返回 Null - Android
- php - 使用 Facebook google API 响应登录时未分配给 SESSION