데이터는 각각의 고유 한 Game Code
정확히 두 팀을 가지고 있으며, 어떤 넥타이가 없다고 가정 게임 다음의 예에 의해 주어진 :
df <- structure(list(`Team Code` = c(5L, 6L, 5L, 5L, 8L, 9L, 9L, 8L
), Name = c("Akron", "St. Joseph", "Akron", "Miami(Ohio)", "Alabama",
"Florida", "Tennessee", "Alabama"), `Game Code` = structure(c(1L,
1L, 2L, 2L, 3L, 3L, 4L, 4L), .Label = c("5050320051201", "404000520051226",
"419000820050903", "664000820050910"), class = "factor"), Date = structure(c(13118,
13118, 13143, 13143, 13029, 13029, 13036, 13036), class = "Date"),
Site = c("NEUTRAL", "NEUTRAL", "NEUTRAL", "NEUTRAL", "TEAM",
"AWAY", "AWAY", "TEAM"), Points = c(32L, 25L, 23L, 42L, 37L,
45L, 42L, 43L)), .Names = c("Team Code", "Name", "Game Code",
"Date", "Site", "Points"), row.names = c(NA, -8L), class = "data.frame")
print(df)
## Team Code Name Game Code Date Site Points
##1 5 Akron 5050320051201 2005-12-01 NEUTRAL 32
##2 6 St. Joseph 5050320051201 2005-12-01 NEUTRAL 25
##3 5 Akron 404000520051226 2005-12-26 NEUTRAL 23
##4 5 Miami(Ohio) 404000520051226 2005-12-26 NEUTRAL 42
##5 8 Alabama 419000820050903 2005-09-03 TEAM 37
##6 9 Florida 419000820050903 2005-09-03 AWAY 45
##7 9 Tennessee 664000820050910 2005-09-10 AWAY 42
##8 8 Alabama 664000820050910 2005-09-10 TEAM 43
당신은 당신이 원하는 생성 dplyr
를 사용할 수 있습니다,
library(dplyr)
result <- df %>% group_by(`Game Code`) %>%
mutate(`Win/Loss`=if(first(Points) > last(Points)) as.integer(c(1,0)) else as.integer(c(0,1)))
print(result)
##Source: local data frame [8 x 7]
##Groups: Game Code [4]
##
## Team Code Name Game Code Date Site Points Win/Loss
## <int> <chr> <fctr> <date> <chr> <int> <int>
##1 5 Akron 5050320051201 2005-12-01 NEUTRAL 32 1
##2 6 St. Joseph 5050320051201 2005-12-01 NEUTRAL 25 0
##3 5 Akron 404000520051226 2005-12-26 NEUTRAL 23 0
##4 5 Miami(Ohio) 404000520051226 2005-12-26 NEUTRAL 42 1
##5 8 Alabama 419000820050903 2005-09-03 TEAM 37 0
##6 9 Florida 419000820050903 2005-09-03 AWAY 45 1
##7 9 Tennessee 664000820050910 2005-09-10 AWAY 42 0
##8 8 Alabama 664000820050910 2005-09-10 TEAM 43 1
을 여기에 우리 첫째 01,Game Code
을 입력 한 다음 mutate
을 사용하여 각 그룹에 대해 Win/Loss
열을 만듭니다. 여기서 논리는 단순히 first
Points
이 last
(가정으로 2 개만있는 경우)보다 크면 열을 c(1,0)
으로 설정한다는 것입니다. 그렇지 않은 경우 (0,1)
으로 설정합니다. 이 로직은 타이를 처리하지는 않지만 쉽게 확장 할 수 있습니다. 공백 및 /
과 같은 특수 문자 때문에 열 이름을 역 인용 부호로 묶습니다.
데이터 프레임의 예와 출력물을 제공 할 수 있습니까? 나는 당신이 성취하고자하는 것을 정확히 이해하는 데 어려움을 겪습니다. –
[재현 가능한 예제를 만드는 방법] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)을 참조하십시오. 샘플 데이터와 해당 입력에 대한 원하는 출력을 제공하십시오. 어디서 붙어 있는지 정확히 설명하십시오. – MrFlick
몇 가지 예제 데이터와 더 나은 설명을 추가했습니다. – John