私は(MAR06のような)特定のパターンマッチング、テキストの文字列から月を抽出する機能を持つ関数の値を返しません:物事を単純化するためにRに変異が正しく
library(dplyr)
pattern <- "(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)\\d{2,2}"
find_month <- function(x)
{
extracted <- str_extract(x, pattern)
month_string <- substr(extracted, 1, 3)
if(!is.na(month_string) && month_string[[1]] == 'MAY')
{
value <- 1
}
else
{
value <- -1
}
return(value)
}
を、私が唯一です月が5月かどうかをここで確認してください。 私はそれを手動でテストしたときにそれが正常に動作します:私はデータフレームの上にそれを呼び出すとき
> find_month("HELLO THERE MAY06")
[1] 1
> find_month("BYE SEP12")
[1] -1
しかし、それは常にすべての行に対して1を返します。私は間違って何を
a = c("HELLO THERE MAY06", "BYE SEP12")
b = c(TRUE, FALSE)
df = data.frame(desc=a, other=b)
df_mutated <- mutate(df, month = find_month(desc))
df_mutated
desc other month
1 HELLO THERE MAY06 TRUE 1
2 BYE SEP12 FALSE 1
やっていますか?
なぜを使用することができます単に 'grepl(" MAY "、" HELLO THERE MAY06 "、fixed = TRUE)'を使って、必要に応じて数値に変換してください。これはyesを1、noを0とします。 –
@RichardScriven:おそらく '' MAYBE NOV07 ''などのマッチを防ぐためにgrepl( 'MAY \\ d {2}'、...) – jbaums