2015-05-14 46 views
2

我已經發布了我正在使用的數據樣本here刪除和彙總重複項

「包裹......」是主要的索引變量,並且有很多重複。重複在所有其他列中不一致。我的目標是彙總數據集,以便每個宗地只有一個觀察點。 我用下面的代碼來嘗試求和數值載體:

aggregate(Ap.sample$X.11~Ap.sample$Parcel..,FUN=sum)

的問題是它消除除了包裹和我引用其它載體的一切。

我的目標是對該parcelID的某些數值向量(sum)(X.11,X.13,X.15,num_units)使用相同的規則,對於其他數值向量使用不同的規則(平均值) (英畝,Ttl_sq_ft,Mtr.Size),還有一個不同的規則(只是選擇一個名稱)爲字符變量(假設有另一個「customer.name」字段,具有不同的值,用於相同的唯一宗地ID,即「Steven condominiums」和「斯蒂芬公寓」),並刪除所有其他變量的額外觀察。

我試過使用numcolwise函數,但也沒有做我所需要的。 我的直覺是指定我要總結的欄目,我想取平均值,像這樣的列:

DT<-as.data.table(Ap.sample) 
sum_cols<-Ap.05[,c(10,12,14)] 
mean_cols<-Ap.05[,c(17:19)] 

,然後使用lapply功能要經過每個觀察和做什麼,我需要。

df05<-DT[,lapply(.SD,sum), by=DT$Parcel..,.SDcols=sum_cols] 
df05<-DT[,lapply(.SD,mean),by=DT$Parcel..,.SDcols=mean_cols] 

但是在第一次就吐出錯誤。我知道有一個更簡單的解決方法,而不是試圖通過它。

回答

2

你可以這樣做:

library(dplyr) 
df %>% 
    # create an hypothetical "customer.name" column 
    mutate(customer.name = sample(LETTERS[1:10], size = n(), replace = TRUE)) %>% 
    # group data by "Parcel.." 
    group_by(Parcel..) %>% 
    # apply sum() to the selected columns 
    mutate_each(funs(sum(.)), one_of("X.11", "X.13", "X.15", "num_units")) %>% 
    # likewise for mean() 
    mutate_each(funs(mean(.)), one_of("Acres", "Ttl_sq_ft", "Mtr.Size")) %>% 
    # select only the desired columns 
    select(X.11, X.13, X.15, num_units, Acres, Ttl_sq_ft, Mtr.Size, customer.name) %>% 
    # de-duplicate while keeping an arbitrary value (the first one in row order) 
    distinct(Parcel..) 
+1

正要發表評論,我喜歡你的第一個答案。按照你最初使用select(one_of(...),變異變量,Parcel ...和字符串變量來刪除不需要的變量,然後%%%distinct(Parcel ..)重複的同時保留字符串變量的任意值(第一個按行排序) –

+0

有沒有一種方法可以在沒有dplyr的情況下執行相同的操作? '> install.packages('dplyr_0.1.tar.gz ',repos = NULL,type ='source') 將軟件包安裝到'C:/Users/u0432865/Documents/R/win-library/3.0' (as'lib'is unspecified) Warning:invalid package'dplyr_0 .1.tar.gz' 錯誤:錯誤:未指定軟件包 install.packages中的警告: 運行命令'「C:/PROGRA~1/R/R-30~1.1/bin/x64/R」CMD INSTALL -l「C:\ Users \ u0432865 \ Documents \ R \ win-library \ 3.0」「dplyr_0.1.t ar.gz「'具有狀態1 install.packages中的警告: 安裝包'dplyr_0.1.tar.gz'具有非零退出狀態' –

+1

@ slap -a-da-bias嘗試'install.packages( 「dplyr」)' –