2013-12-11 35 views
0

我有一個數據幀。R檢查重複項,然後將另一列與另一列分開

1  2  3 
A 1 100 45 
B 1 100 30 
C 2 80 20 

首先我想查找行中的重複元素(對於A和B,1 = 1)。在那之後,我想讓R加起來A3和B3(45 + 30 = 75),但只有當1是重複的時候。然後,將A3與該答案分開(所以,45/75 = 0.6),對於B3和答案也是如此。然後分別將其與A2和A3相乘。

這些答案應該相應地更新數據框。所以A2應該成爲60,B2應該成爲40.

任何人都可以幫我解決這個問題嗎?

提前致謝!

回答

3
df <- read.table(textConnection(
'A 1 100 45 
B 1 100 30 
C 2 80 20'), header = FALSE) 

library(data.table) 
dt <- data.table(df) 

dt[,NewV4 := V3*V4/sum(V4), by = 'V2'] 

輸出 -

> dt 
    V1 V2 V3 V4 NewV4 
1: A 1 100 45 60 
2: B 1 100 30 40 
3: C 2 80 20 80 
+0

我應該如何解釋在R功能數據框的複製粘貼?我試過df < - read.table(textConnection(data),header = FALSE),但是這給了我無效的'text'參數。 –

+0

我認爲Codoremifa只是爲了說明目的製作了一個「玩具」數據集。您可以使用自己的數據框,將其命名爲'df',然後繼續從'library(data.table)'開始的代碼。 –

相關問題