我有一个包含字符串值的数据框
id str
a 1
b 10
c 0
d 102
e 010
我需要创建一个标志,如果str中有0,则标志为1,标志为0
我使用以下代码:
df$flag <-ifelse(grep('0', df$str) == "1", 1, 0)
但这会返回的行数少于df中的总行数。
在检查中我发现
grep('0', df$str[1]) returns int(0)
,而 grep(&#39; 0&#39;,df $ str [2])返回1
知道如何使用这个
答案 0 :(得分:2)
#df$flag <- NULL #unneeded. skip it.
df$flag <- ifelse(grepl('0',df$str), 1, 0)
您需要grepl
而不是grep
答案 1 :(得分:1)
您可以像这样使用grepl
df <- read.table(text = "id str
a 1
b 10
c 0
d 102
e 010", header = T)
df$Flag <- ifelse(grepl(0,df$str), 1, 0)
> df
id str Flag
1 a 1 0
2 b 10 1
3 c 0 1
4 d 102 1
5 e 10 1