是否有 R 函数允许您从数值变量中提取单个数字,无论其位置如何(不仅仅是第一个或最后一个数字?

问题描述 投票:0回答:1

我看过很多关于如何使用 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)))))

谢谢!

r dplyr tidyverse tidyr data-manipulation
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
© www.soinside.com 2019 - 2024. All rights reserved.