2016-07-08 46 views
0

假設我有以下數據幀data -如何提取與同一數據幀中另一個向量的每個唯一值對應的數據幀中的向量的信息?

V1 V2 
A 3 
A 2 
A 1 
B 2 
B 3 
C 4 
C 3 
C 1 
C 2 

現在我想提取每個級別的信息,即V1ABCD & E)。舉例來說,如果我選擇中的不同級別的總和,那麼V1的每個級別應該是什麼代碼? 我希望是 -

 V1 V2 
     A  6 
     B  5 
     C  10 

輸出我試着lapplysapply但他們沒有給我想要的信息。當然,我嘗試了sapply(data,unique),這沒有任何意義。

另外,提前(可能有點棘手),如果我想看到V2這是在V1所有級別唯一的值,該怎麼辦呢? 謝謝!

+1

你能顯示預期的輸出,因爲它是不明確的。你需要'library(data.table); setDT(data)[,if(uniqueN(V1)> 1).SD,。(V2)]' – akrun

+0

你是否想要'unique(data)'?或者,這可能會有所幫助 - http://stackoverflow.com/questions/18201074/find-how-many-times-duplicated-rows-repeat-in-r-data-frame/18201245? – thelatemail

+0

@thelatemail,實際上你給的鏈接並不完全是我想要的。我想要A,B和C每個值有多少個值,以及它們中常見的值。 – madmathguy

回答

0

也許這是有幫助的

output <- aggregate(data=df,V2~.,FUN=paste) 

對於共同價值觀的提取在V2呈現V1使用所有級別這個

Reduce(intersect,output$V2) 
+0

謝謝@ user2100721,這幾乎是我想要的。唯一的問題是當我嘗試提取'V2'值並使用'unlist'函數產生一個單獨的向量時,它將在列表中給出輸出。 – madmathguy

+0

是的,那很好。對於第二部分,我想提取出現在各個層面的獨特價值。在這種情況下,A:3,2,1,B:2,3,C:4,3,1,2。所以獨特的價值將是2&3。如何得到它們? – madmathguy

+0

好的,讓我用我提供的例子來說明。形成我的查詢的第一部分,我想顯示A取值3,2,1。 B取值2,3,C取值4,3,1,2。 對於第二部分,我們可以看到值2和3在A,B和C中是唯一的。我希望輸出爲2和3. – madmathguy

3

我想這是你想要的,因爲它會找到在不同組別之間共同的唯一值:

常見V2每個級別的值爲V1

Reduce(intersect, split(dat$V2, dat$V1)) 
#[1] 3 2 

常見V1V2

Reduce(intersect, split(dat$V1, dat$V2)) 
#[1] "C" 
+0

對不起,我遲到了。但它的工作!感謝@akrun的幫助。 – madmathguy

+0

也感謝@thelatemail – madmathguy

1

使用data.table每個級別值,我們可以發現在 'V2' 跨越 'V1' 是常見的unique值。

library(data.table) 
setDT(data)[,uniqueN(V1)==uniqueN(data$V1) , by = V2][(V1)]$V2 
#[1] 3 2 

和「V2」的每一個獨特的元素共同的「V1」

setDT(data)[, if(uniqueN(V1)==1) .SD , by = V2]$V1 
#[1] "C" 
相關問題