У меня есть набор данных символьных переменных:
col1 = c("a","b","c")
col2 = c("a","b_a","d")
df = data.frame(col1,col2)
col1 col2
1 a a
2 b b_a
3 c d
Я хочу создать переменную a, которая помечает 1,0, если какое-либо значение в этой строке содержит подстроку «a».
col1 col2 a
1 a a 1
2 b b_a 1
3 c d 0
Моя попытка ниже.Это не совсем так, так как я считаю, что это займет TRUE
, если какое-либо значение в кадре данных содержит подстроку, а не строку.
df["a"] = ifelse(any(sapply(df,function(x) str_detect(x,"a")),TRUE),1,0)
Я думал, что с оператором ifelse
любые функции в операторе ifelse
оценивают только df[i,]
, а не весь фрейм данных, где i
- строка, которую он просматривает.Это не похоже на случай.
1) Как создать искомый фрейм данных?Обратите внимание, что в моем реальном наборе данных есть более 100 столбцов, поэтому нет смысла перечислять их все.
2) Почему ifelse оценивает только строку i
из df
, а не целую df
?
Обратите внимание, что предыдущие вопросы смотрят только на одну переменную, я смотрю на все переменные, так что это не дубликат.