>source

dplyr 워크 플로에서 newvar == 0 일 때 newvar 열 뒤에 데이터 프레임의 각 열에 0을 붙여 넣으려고합니다. 그렇지 않으면 아무 작업도 수행하지 않습니다. 홍채 데이터 세트를 수정했습니다.

library(dplyr)
n <- 150 # sample size
iris1 <- iris %>% 
    mutate(id = row_number(), .before = Sepal.Length) %>% 
    mutate(newvar = sample(c(0,1), replace=TRUE, size=n), .before = Sepal.Length ) %>% 
    mutate(across(.[,3:ncol(.)], ~ case_when(newvar==0 ~ 0)))

나는 여기와 같은 해결책을 시도했다조건에 따라 여러 열의 값을 변경하기 위해 across () 함수를 mutate () 및 case_when ()과 결합하는 방법은 무엇입니까?. 내 이해 :

  • .[,3:ncol(.)] newvar 열 뒤에 열을 통과합니다.
  • case_when(newvar==0 조건을 설정하려고합니다.
  • ~ 0newvar==0 조건이 충족되면 붙여 넣기 0이라고 말하려고합니다.
  • 내가 뭔가 잘못하고 있다는 것을 알고 있지만 무엇을하는지 모르겠습니다! 도와 주셔서 감사합니다.

    • 답변 # 1

      .[,3:ncol(.)] 실제 열 번호가 아니라 열의 값입니다. 사용 3:ncol(.) 잘 작동합니다.

      일반적으로 위치별로 열을 참조하지 않고 대신 이름을 사용하는 것이 좋습니다. 당신은 하나에서 이것을 할 수 있습니다 mutate 요구.

      library(dplyr)
      iris %>% 
        mutate(id = row_number(), 
              newvar = sample(c(0,1), replace=TRUE, size=n), 
              across(Sepal.Length:Petal.Width, ~ case_when(newvar==0 ~ 0, 
                                                           newvar == 1 ~ .)))
      
      

  • 이전 javascript - 차트 js 원형 차트, 더 높은 값은 더 어두운 음영, 더 낮은 값은 더 밝은 음영 매월 값을 표시하고 있습니다
  • 다음 javascript - angularJS 경로 링크로 PHP 요소 생성