首页 > 解决方案 > 添加具有特定值的列

问题描述

我现在有一个看起来像这样的表(虽然我总共有 2000 行),并且需要添加另一列具有特定值的列。到目前为止,这是我的原始数据:

家庭 FIID
1034 10341
1034 10343
1034 10344
1056 10561
1056 10563
1056 10564
1101 11011
1101 11012
1101 11013
1101 11014

最终,我需要包含每个 FIID 值的父母 ID 的添加列。但是,我只需要在 FIID 以 1 或 2 结尾后填写父母 ID。所以,最终,我需要它看起来像这样:

家庭 FIID PID
1034 10341 10343
1034 10343 0
1034 10344 0
1056 10561 10563
1056 10563 0
1056 10564 0
1101 11011 11013
1101 11012 11013
1101 11013 0
1101 11014 0

因此,我只需要每个以 1 或 2 结尾的 FIID 之后的父母 ID,但我的表中没有一致的模式,因此我无法使用模式函数添加父母 ID。任何以 3 或 4 结尾的 FIID 都需要接收零的父母 ID。

任何帮助都会很棒。

谢谢。

标签: r

解决方案


在没有可重现数据的情况下,这里有一个模拟数据的解决方案。

df$PID <- ifelse(grepl("(1|2)$", df$FIID), sub("(\\d+)\\d$", "\\13", df$FIID),0)

结果:

    df
  FIID  PID
1 1231 1233
2 1233    0
3 1230    0
4 1234    0
5 1232 1233

数据:

df <- data.frame(
  FIID = c(1231, 1233, 1230, 1234, 1232)
)

推荐阅读