2017-12-08 9 views
0
df1 <- read.table(text = "V1 V2 
    21140 -2 
    21140 0 
    21140 2 
    21140 -1 
    3878 0 
    3878 1 
    3878 2 
    20434 -1 
    20434 2 
    20434 1", header = TRUE) 

에서 열을 집계 제가이 평균을 얻기위한 데이터 프레임

조건은 다음과 같은 결과가 원하는 이제 다음 명령

sample.test.final <- df1[,list(V2 = mean(V2)), by = c("V1")] 

사용 음수 값을 선택하거나 최대 양수 값을 사용하십시오.

df2 <-  "V1 V2 
      21140 -2 
      3878 2 
      20434 -1" 
+0

그룹당 두 개 이상의 값이 0보다 작은 경우 어떻게됩니까? –

+0

최소값을 얻으십시오. 나는 예제를 업데이트했습니다 – Kryo

답변

2

if/else c ondition 열을 요약 확인 : 어떤이 있다면

df1[, .(V2 = if(all(V2 >= 0)) max(V2) else V2[V2 < 0]), V1] 

#  V1 V2 
#1: 21140 -2 
#2: 21140 -1 
#3: 3878 2 
#4: 20434 -1 

참고이 V2의 모든 음의 값을 유지합니다.

+0

V2에서 최소 음수 값을 유지하려면 어떻게해야합니까? – Kryo

+1

df1 [,. (V2 = if (all (V2> = 0)) max (V2) else min)), V1]' – Psidom