根据条件在数据框中为变量添加前缀,然后创建一个新变量以显示哪些变量已添加前缀

Prefixing variables in a dataframe based on a condition and then creating a new variable to show which variables have been prefixed

我有一个包含变量的数据框 RingNo

> head(df)
  Place Book.Number  RingNo
1   WYT     2020#01  603701
2   WYT     2020#01  603701
3   WYT     2020#01  603701
4   WYT     2020#01  603702
5   WYT     2020#01  603703
6   WYT     2020#01  AFH5490

如果 df$RingNo 中的任何字符串只有 6 个字符,我想为其添加前缀“x”。 df$RingNo 中的所有字符串都有 6 个或 7 个字符。

我可以通过

实现以上目标
inds <- nchar(df$RingNo) == 6
df$RingNo[inds] <- paste0('x', df$RingNo[inds])

> head(df)
  Place Book.Number  RingNo
1   WYT     2020#01 x603701
2   WYT     2020#01 x603701
3   WYT     2020#01 x603701
4   WYT     2020#01 x603702
5   WYT     2020#01 x603703
6   WYT     2020#01 AFH5490

但是,如果我现在可以创建一个新变量 df$Comment 来指示哪些变量已添加前缀,那将非常有用。这是一个拥有超过 200,000 行的巨大数据框。 所以我得到这样的东西

   Place Book.Number RingNo Comment
1   WYT     2020#01 x603701 Prefixed with an x
2   WYT     2020#01 x603701 Prefixed with an x
3   WYT     2020#01 x603701 Prefixed with an x
4   WYT     2020#01 x603702 Prefixed with an x
5   WYT     2020#01 x603703 Prefixed with an x
6   WYT     2020#01 AFH5490

您可以再次使用相同的 inds 变量:

df$Comment <- ''
df$Comment[inds] <- 'Prefixed with an x'

我们可以用 ifelse

 df$Comment <- ifelse(inds, 'Prefixed with an x', '')