각 회사의 활성 상태를 나열하는 변수가 있습니다. 어떤 종류의 지역 (서쪽, 남쪽, 중서부 등)을 만들 수 있기를 바라고 있습니다. 변하기 쉬운. 이 경우 각 회사가 둘 이상의 지역에있을 수 있습니다.상태 목록에서 지역 표시기 변수를 만드는 방법 R
내 접근 방식은 지역 벡터를 정의한 다음 표시기 변수 (dat $ westYN, dat $ southYN 등)를 해당 지역의 상태에서 작동하는 경우 1로, 그렇지 않으면 0으로 정의하려고했습니다.
str_split을 사용하여 상태 문자열을 분리했지만 결과 목록을 사용하는 방법에 어려움을 겪고 있습니다.
이 경우 dat $ state는 단일 값이지만 여러 상태가있을 때는 작동하지 않습니다.
도움이 될 것입니다. 먼저
id <- 1:20
state <- c("NJ, NY",
"ID, OR",
"CA",
"FL, MO, NC, RI",
"TX DE, KY, MD, MA, NH, NJ, PA, RI, WV",
"FL, KY, TN",
"DC, MD, VA",
"NY",
"AZ, NM",
"FL, NJ, NY",
"IN, MI",
"GA, SC",
"NV",
"AR, CO, KY, MO, TN, TX",
"OH",
"NC",
"FL",
"IL",
"AZ",
"CA, CT, IL, MA, OH, PA, UT, WV"
)
dat <- data.frame(id, state)
west <- c("WA", "OR", "CA", "NV", "AZ", "ID", "MT", "WY",
"CO", "NM", "UT")
south <- c("TX", "OK", "AR", "LA", "MS", "AL", "TN", "KY",
"GA", "FL", "SC", "NC", "VA", "WV")
midwest <- c("KS", "NE", "SD", "ND", "MN", "MO", "IA", "IL",
"IN", "MI", "WI", "OH")
northeast <- c("ME", "NH", "NY", "MA", "RI", "VT", "PA",
"NJ", "CT", "DE", "MD", "DC")
stateList <- stringr::str_split(dat$state, ",")
dat$westYN <- ifelse(is.element(stateList, west), 1, 0)
dat$southYN <- ifelse(is.element(stateList, south), 1, 0)
dat$midwestYN <- ifelse(is.element(stateList, midwest), 1, 0)
dat$northeastYN <- ifelse(is.element(stateList, northeast), 1, 0)
추천 해 주셔서 감사합니다. 코드를 실행할 때 여러 영역의 상태가있는 행이 올바른 결과를 산출하지 못하는 것으로 나타났습니다. 예를 들어 id 20은 모든 지역에 대해 true 일 때 서쪽 만 사실입니다. 게다가 id 5는 전반적으로 틀린가? 이 문제를 해결하는 방법에 대한 아이디어가 있습니까? –
@EmmaKortemeier @MrFlick 여전히 공백을 잘라야합니다. 이것은'any (x)'대신'any (trimws (x)')를 써서 할 수 있습니다. 응답에 대한 개정안을 제출했으나 아직 peer review가 보류 중입니다 – jmuhlenkamp
@jmuhlenkamp 그것을 해결! 고마워요! –