我看过很多关于如何使用 gsub 或 grep 等函数提取数字变量中的第一个数字或最后一个数字的帖子,但是我希望能够提取特定的数字,无论它是第一个、中间的还是或最后一个更大的数字变量。 例如,如果某列的某一行的数字为 3,我尝试进行 R 扫描,如果是,则创建一个新变量,其中 1=是,0=否。
假设我有这个数据框:
have <- as.data.frame(structure(list(Q14=structure(c(13, 3, 788, 134, 56, 3214, 1036 )))))
这是我要生成的第二列,其中变量 Q14_3 的 1 表示变量 Q14 在某处有 3,0 表示 Q14 的特定行中没有数字 3。
want <- as.data.frame(structure(list(Q14=structure(c(13, 3, 788, 134, 56, 3214, 1036 )),
Q14_3=structure(c(1, 1, 0, 1, 0, 1, 1)))))
谢谢!
使用
grepl
创建布尔向量并使用 +
将其转换为 1/0 变量:
have$Q14_3 <- +grepl(3, have$Q14)
# Q14 Q14_3
# 1 13 1
# 2 3 1
# 3 788 0
# 4 134 1
# 5 56 0
# 6 3214 1
# 7 1036 1
测试:
all.equal(have, want)
# TRUE