Как бы я записал определенное количество чисел c внутри функции в R? - PullRequest
0 голосов
/ 01 апреля 2020

Я уверен, что формулировка моего вопроса могла бы быть лучше, но это сценарий, с которым я имею дело.

Мои текущие данные выглядят так:

     v1    v2    v3    v4
1   abc   def    1     1
2   abc   def    1     1
3   1990  def    0     1   

v3 и v4 возвращают 1, когда v1 или v2 равен 'ab c' или 'def'. У меня есть многочисленные примеры в моем наборе данных, где есть годы, перечисленные в типичном контексте 4 di git (например: 1960, 1990, 2000). Как я могу включить их в свой код, чтобы вернуть '1' для v3 и v4 независимо от даты?

Это мой текущий код:

df$v3 <- as.integer(grepl"(^abc$|^def$)", df$v1))
df$v4 <- as.integer(grepl"(^abc$|^def$)", df$v2))

1 Ответ

1 голос
/ 01 апреля 2020

Просто чтобы убедиться, что я правильно интерпретирую ваш желаемый результат, вы хотите, чтобы v3 был 1, если v1 равен 'ab c' или 'def' или 4-di git year, и вы хотите, чтобы v4 будет 1, если v2 равен 'ab c' или 'def' или 4-ди git год, верно?

Если так, тогда вместо того, чтобы ваш регулярный оператор просто искал точные строки, ab c 'или' def ', вы также можете найти номер 4-ди git.

df$v3 <- as.integer(grepl("(^abc$|^def$|^[[:digit:]]{4}$)", df$v1))
df$v4 <- as.integer(grepl("(^abc$|^def$|^[[:digit:]]{4}$)", df$v2))
...