>source

데이터 프레임이 있습니다

`Person Class1 Class2 Class3
  Joe       A      A      A
  Joe       A      C      C
  Fred      B      B      B
  Jane      D      C      A
  Fred      F      7      F
  Jane      B      E      A
   R      <NA>     C      C
   S      <NA>     4      4 `

Class1의 값이 Class2 또는 Class3와 같은 결과와 일치하면 새 열을 추가합니다.

`  Person Class1 Class2 Class3 Match1
   Joe      A      A      A     A
   Joe      A      C      C     A
  Fred      B      B      B     B
  Jane      D      C      A     D
  Fred      F      C      F     F
  Jane      B      E      A     B
    R     <NA>     C      C     C
    S     <NA>     E      E     E

나는 시도 df1$Match1 <- ifelse(match(df1$Class1,df1$Class2),df1$Class1, df1$Class2) 하지만 숫자가 ..

누구든지 나를 도울 수 있습니까 ..

  • 답변 # 1

    당신이 사용할 수있는 coalesce 첫 번째 비 NA 값을 얻으려면 'Class' 열.

    library(dplyr)
    df2 <- df1 %>% mutate(Match1 = coalesce(!!! select(., starts_with('Class'))))
    df2
    
    

  • 답변 # 2

    사용 data.table

    library(data.table)
    setDT(df1)[, Match1 := do.call(fcoalesce, .SD), .SDcols = patterns('^Class')]
    
    

    -산출

    df1
    #   Person Class1 Class2 Class3 Match1
    #1:    Joe      A      A      A      A
    #2:    Joe      A      C      C      A
    #3:   Fred      B      B      B      B
    #4:   Jane      D      C      A      D
    #5:   Fred      F      7      F      F
    #6:   Jane      B      E      A      B
    #7:      R   <NA>      C      C      C
    #8:      S   <NA>      4      4      4
    
    

    데이터

    df1 <- structure(list(Person = c("Joe", "Joe", "Fred", "Jane", "Fred", 
    "Jane", "R", "S"), Class1 = c("A", "A", "B", "D", "F", "B", NA, 
    NA), Class2 = c("A", "C", "B", "C", "7", "E", "C", "4"), Class3 = c("A", 
    "C", "B", "A", "F", "A", "C", "4")), class = "data.frame", row.names = c(NA, 
    -8L))
    
    

관련 자료

  • 이전 csharpcodeprovider - C # Casting Array 및 개체 배열에서 정보 가져 오기
  • 다음 python - 반복과의 조합