r - 合并两列中的字符并创建一个新列
问题描述
我有一个这样的数据框。
name zip
Mike Tyson 13756
Mohammed Ali 54412
Joe Frazier 47463
Floyd Mayweahter 34134
我想使用名字和姓氏的第一个字符以及邮政编码的最后两个字符来创建一个新变量
name zip new.var
Mike Tyson 13756 MT56
Mohammed Ali 54412 MA12
Joe Frazier 47463 JF63
Floyd Mayweahter 34134 FM34
我搜索了一个类似的问题,但在这里他们只使用一列从一列中提取字符并创建新变量
解决方案
带有正则表达式的基本 R 方式 -
transform(df, new.var = paste0(sub('^(.)\\w+\\s(.).*', '\\1\\2', name),
sub('.*(..)$', '\\1', zip)))
# name zip new.var
#1 Mike Tyson 13756 MT56
#2 Mohammed Ali 54412 MA12
#3 Joe Frazier 47463 JF63
#4 Floyd Mayweahter 34134 FM34
第一个从列sub
中的两个单词中提取第一个字符,name
第二个sub
从列中提取最后两个字符zip
。我们使用 将它们组合在一列中paste0
。
数据
如果您以可重现的格式提供数据,则更容易提供帮助
df <- structure(list(name = c("Mike Tyson", "Mohammed Ali", "Joe Frazier",
"Floyd Mayweahter"), zip = c(13756L, 54412L, 47463L, 34134L)),
class = "data.frame", row.names = c(NA, -4L))
推荐阅读
- vb.net - Azure shareclient 在一个项目中工作并在另一个项目中引发异常
- laravel - 在 Eloquent 中建立关系
- linux-device-driver - iMX6 Embedded Linux 上的 SD/SDIO 多路复用器(例如 FSSD06-D)
- typescript - 如何在打字稿中重用流(fs.ReadStream)
- website-homepage - 如何添加两个广告主页英文和德文?
- php - 在数字字段上对多数组进行排序
- sql - 如何选择具有共同创建唯一行的两列的下一行?
- python - 如何摆脱 LinuxOS 上的 pandas 导入错误?
- visual-c++ - 警告 C26435 函数 CXxxx::DoDataExchange 应准确指定 `virtual`、`override` 或 `final` 之一 (c.128)
- c - 使用 C 宏列出事物的替代方法