R에서 : 값이 한 열에 나타나는 횟수를 계산하지만 다른 열의 NA 값을 제외하는 새 열을 만듭니다.

epi_n00b

이것은 다음 질문과 유사한 스레드입니다. R 사용 : 'n'다른 열에서 'n'조건이 발생하는 횟수를 계산하는 새 열 만들기

하지만 좀 더 복잡하게 만들어야합니다.

예제 데이터 :

id  group_name
01  NA
02  NA
03  groupA
03  groupB
04  groupF
05  groupA
05  groupX
06  NA

데이터 프레임에 새 열 "num_groups"를 추가하고 싶습니다. "Num_groups"에는 각 "id"가 속한 총 그룹 수가 포함되어야합니다. "group_name"의 NA는 "id"가 0 개의 그룹에 속함을 의미합니다.

따라서 다음과 같이 표시됩니다.

id  group_name  num_groups
01  NA          0
02  NA          0
03  groupA      2
03  groupB      2
04  groupF      1
05  groupA      2
05  groupX      2
06  NA          0

다음 코드를 사용하여 각 ID가 "id"에 나열된 횟수로 채워진 새 열을 만들 수있었습니다.

MyDF <- cbind(MyDF, num_groups = c(1:210))
MyDF$num_groups <- as.numeric(ave(MyDF$id, MyDF$id, FUN = length))

하지만 "group_name"이 NA 인 경우 "num_groups"0의 값을 만드는 방법을 알 수 없습니다. 또한 which ()를 사용하여 탐색했습니다.

which(is.na(MyDF$group_name))

하지만이 문제를 해결하기 위해 통합하는 방법을 모르겠습니다.

어떤 제안이라도 감사하겠습니다. 감사합니다.

DatamineR

이건 어때?

tbl <- table(df$id)

df$num_groups <- tbl[match(df$id, names(tbl))]

df$num_groups[is.na(df$group_name)] <- 0

df
 id group_name num_groups
 1  1       <NA>          0
 2  2       <NA>          0
 3  3     groupA          2
 4  3     groupB          2
 5  4     groupF          1
 6  5     groupA          2
 7  5     groupX          2
 8  6       <NA>          0

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관