0
데이터 프레임 df가 있고 두 번째 컬럼의 그룹에 의해 최소값으로 새로운 컬럼을 채우고 싶습니다. 이전 게시물은 데이터 프레임의 원래 행과 열을 유지하면서 새 열을 만드는 맥락에서이 문제를 해결하지 못합니다.다른 컬럼의 그룹에 의해 최소값으로부터 mutate 값을 가진 새로운 컬럼을 생성하십시오.
df %>% group_by(a) %>% mutate(Min_b = min(b, na.rm = TRUE))
a b Min_b
1 NA 1
1 1 1
1 2 1
1 2 1
2 3 1
2 5 1
2 6 1
2 NA 1
위는 제공 :
여기a b Min_b
1 NA 1
1 1 1
1 2 1
1 2 1
2 3 3
2 5 3
2 6 3
2 NA 3
는 해당 출력 내 시도입니다 : 내가 달성하고자하는 것은이 출력
a <- c(1,1,1,1,2,2,2,2)
b <- c(NA,1,2,2,3,5,6,NA)
df <- data.frame(a,b)
df
a b
1 NA
1 1
1 2
1 2
2 3
2 5
2 6
2 NA
:
은이 샘플 입력을 가정 나 열의 그룹에 의해 열 b의 최소보다는 오히려 열 b의 최소, (ie, 나는 후자를 원한다).
df %>% group_by(a) %>% top_n(-1, wt = b)
a b
1 1
2 3
올바른 값을 찾을 수 있지만, 다음과 같이 개의 mutate 내에서 작동하지 않는 것 같습니다에 대한 위의 작품
:df1 %>% group_by(a) %>% mutate(Min_of_b = top_n(-1, wt = b))
Error in is_scalar_integerish(n) : argument "n" is missing, with no default
이 작업을 수행하는 다른 방법에 대한 어떤 제안 주셔서 감사합니다!
그것은에 우리에게 훨씬 쉬울 것 질문에 샘플 데이터를 제공했다면 도움이 될 것입니다. 아마도'dput (head (df)) '처럼 간단 할 것입니다. 또한 예상되는 출력이 어떻게 생겼는지는 분명하지 않습니다. – r2evans
당신의 이상적인 출력을 기대하는 방법이 명확하지 않지만, 당신이 말한 것에 근거하여 대신 df %> % group_by (id) %> % mutate (new_column = min (second_column))'를 사용해야한다고 생각합니다. – AntoniosK
패키지 버전을 확인 하시겠습니까? 'df %> % group_by (a) %> % mutate (Min_b = min (b, na.rm = TRUE))'나를 위해 일합니다 .... – A5C1D2H2I1M1N2O1R2T1