所以我有一个包含某些字符的列表,如下所示
list <- c("MY","GM+" ,"TY","RS","LG")
我有一个名为&#34; CODE&#34;的变量。在数据框中如下
code <- c("MY GM+","","LGTY", "RS","TY")
df <- data.frame(1:5,code)
df
code
1 MY GM+
2
3 LGTY
4 RS
5 TY
现在我要创建5个名为&#34; MY&#34;,&#34; GM +&#34;,&#34; TY&#34;,&#34; RS&#34;的新变量, &#34; LG&#34;
如果在CODE变量
中存在匹配大小写,则取二进制值1df
code MY GM+ TY RS LG
1 MY GM+ 1 1 0 0 0
2 0 0 0 0 0
3 LGTY 0 0 1 0 1
4 RS 0 0 0 1 0
5 TY 0 0 1 0 0
非常感谢您的帮助。谢谢。
答案 0 :(得分:3)
由于您知道将返回多少个值(5),以及您希望其类型是什么(整数),因此可以将vapply()
与grepl()
一起使用。我们可以使用integer()
的{{1}}参数中的vapply()
将生成的逻辑矩阵转换为整数值。
FUN.VALUE
我认为你的原始数据有一些拼写错误,所以这就是我使用的:
cbind(df, vapply(List, grepl, integer(nrow(df)), df$code, fixed = TRUE))
# code MY GM+ TY RS LG
# 1 MY GM+ 1 1 0 0 0
# 2 0 0 0 0 0
# 3 LGTY 0 0 1 0 1
# 4 RS 0 0 0 1 0
# 5 TY 0 0 1 0 0