【发布时间】:2018-05-30 03:20:58
【问题描述】:
我有一个类似这样的数据框:
EVENT ID GROUP YEAR X.1 X.2 X.3 Y.1 Y.2 Y.3
1 1 John Smith GROUP1 2015 1 John Smith 5 Adam Smith 12 Mike Smith 20 Sam Smith 7 Luke Smith 3 George Smith
新日志的每一行都重复,但 X.1 : Y.3 中的值经常变化。 X.1 : Y.3 中的 ID 和 ID 有一个数值,然后是名称 ID,即“1 John Smith”或“20 Sam Smith”将是字符串。
我有一个问题,在某些情况下,ID 将保持为“1 John Smith”,但在 X.1 : Y.3 中,数字可能会在“John Smith”之前更改,例如它可能是“14 John史密斯”。名称总是正确的,只是数字有时会混淆。
我有一个受此不匹配影响的 200 多个 ID 的列表 - 替换 X.1 : Y.3 中的值以使它们与列 ID 中的正确 ID 匹配的最有效方法是什么?
我不知道“14 John Smith”出现在哪一列,可能是 X.1、Y.2 或 Y.3,具体取决于行。
我可以在 dplyr 代码行中使用替换函数,或者为每个 200 多个 ID 和每个受影响的列使用 gsub,但这似乎非常低效。有没有比重复以下 x 次更快的方法?
df%>%mutate(X.1=replace(X.1, grepl('John Smith', X.1), "1 John Smith"))%>%as.data.frame()
【问题讨论】: