2017-06-26 14 views
1

我需要在我的df中創建一個變量,其中我根據拆分結果分配唯一的連續值。我一直在尋找,我發現split()可以幫助我。不過,我堅持如何分配順序值。吐和分配身份

我的數據的簡化形式爲

structure(list(Year = c(2014L, 2014L, 2014L, 2014L, 2014L, 2014L, 
2014L, 2014L), Session = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), .Label = "July", class = "factor"), SiteName = structure(c(2L, 
2L, 1L, 1L, 4L, 4L, 3L, 3L), .Label = c("Kaoshe", "Matoa", 
"Livingi", "Sedina"), class = "factor"), Temp = c(23L, 12L, 15L, 
27L, 30L, 21L, 21L, 21L)), .Names = c("Year", "Session", "SiteName", 
"Temp"), class = "data.frame", row.names = c(NA, -8L)) 

我做temp<-split(df, df[,c("SiteName","Session","Year")])

我希望身份被放置在另一個變量(DF $順序),其中在第一次分裂中的每一行會一個的值和第二個和第三個三個等等。我在R方面比較新,我不能做循環。

我所需的輸出會像

Year Session SiteName Temp order 
2014 July Matoa 23 1 
2014 July Matoa 12 1 
2014 July Kaoshe 15 2 
2014 July Kaoshe 27 2 
2014 July Sedina 30 3 
2014 July Sedina 21 3 
2014 July Livingi 21 4 
2014 July Livingi 21 4 

回答

0

我們可以使用.GRPdata.table

library(data.table) 
setDT(df)[, order := .GRP, .(SiteName, Session, Year)] 

或用base R

df$order <- cumsum(!duplicated(df[1:3])) 
df$order 
#[1] 1 1 2 2 3 3 4 4 
+0

是的,這解決了我的我ssues。非常感謝 – Taw