이것은 다음 질문과 유사한 스레드입니다. 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))
하지만이 문제를 해결하기 위해 통합하는 방법을 모르겠습니다.
어떤 제안이라도 감사하겠습니다. 감사합니다.
이건 어때?
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] 삭제
몇 마디 만하겠습니다