2017-10-28 120 views
0

我需要通過將值除以唯一列數(YEAR DIV POL ST CTY CR PL YID LID DATE)來獲得Area和Prm列中的值。將列值除以R中的多個列的唯一編號

在R中有一個函數來實現這個嗎?

在此先感謝。

Table: 

Tag YEAR DIV POL ST CTY CR PL YID LID DATE Area PRm SEP1 SEP2 
S25 2005 7 3068 15 205 11 44 4 2 9042004 799 4504 326.9 296.6 
S1 2005 7 4077 15 205 11 90 4 2 9202004 300 3000 316.1 309.2 
S16 2005 7 4077 15 205 11 90 4 2 9202004 300 3000 391.2 201.5 
S2 2005 7 4077 15 205 11 90 4 2 9202004 300 3000 271.2 311.5 
S28 2005 7 3180 15 205 11 44 5 6 9202004 651 1747 251.2 382.5 


Output: 

Tag YEAR DIV POL ST CTY CR PL YID LID DATE Area PRm SEP1 SEP2 
S25 2005 7 3068 15 205 11 44 4 2 9042004 799 4504 326.9 296.6 
S1 2005 7 4077 15 205 11 90 4 2 9202004 100 1000 316.1 309.2 
S16 2005 7 4077 15 205 11 90 4 2 9202004 100 1000 391.2 201.5 
S2 2005 7 4077 15 205 11 90 4 2 9202004 100 1000 271.2 311.5 
S28 2005 7 3180 15 205 11 44 5 6 9202004 651 1747 251.2 382.5 

表和輸出的區別在區域和PRm列的2,3和4行。

Area和Prm列(300和3000)中的值除以3(因爲YEAR DIV POL ST CTY CR PL YID LID DATE列在第2,3和4行中是相同的)。 SO在該地區和PRM列中的值由3(300/3 =在塔區100和3000/3 = 1000在PRM列在輸出表中劃分在2,3和第四行。

 S1 2005 7 4077 15 205 11 90 4 2 9202004 100 1000 316.1 309.2 
    S16 2005 7 4077 15 205 11 90 4 2 9202004 100 1000 391.2 201.5 
    S2 2005 7 4077 15 205 11 90 4 2 9202004 100 1000 271.2 311.5 
+2

'Table'和'Output'有什麼區別? – useR

+1

我已經努力嘗試瞭解這個問題,但無濟於事。你可能想重鑄它。 –

+0

對不起,如果我讓它變得複雜。請參閱上面的簡化版本。 – user8848543

回答

0

dplyr

df1 %>% add_count(YEAR,DIV,POL,ST,CTY,CR,PL,YID,LID,DATE) %>% 
    mutate(Area = Area /n) %>% 
    select(-n) 

輸出

# # A tibble: 5 x 15 
#  Tag YEAR DIV POL ST CTY CR PL YID LID DATE Area PRm SEP1 SEP2 
# <chr> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> <dbl> <int> <dbl> <dbl> 
# 1 S25 2005  7 3068 15 205 11 44  4  2 9042004 799 4504 326.9 296.6 
# 2 S1 2005  7 4077 15 205 11 90  4  2 9202004 100 3000 316.1 309.2 
# 3 S16 2005  7 4077 15 205 11 90  4  2 9202004 100 3000 391.2 201.5 
# 4 S2 2005  7 4077 15 205 11 90  4  2 9202004 100 3000 271.2 311.5 
# 5 S28 2005  7 3180 15 205 11 44  5  6 9202004 651 1747 251.2 382.5 

數據

df1 <- read.table(text="Tag YEAR DIV POL ST CTY CR PL YID LID DATE Area PRm SEP1 SEP2 
S25 2005 7 3068 15 205 11 44 4 2 9042004 799 4504 326.9 296.6 
        S1 2005 7 4077 15 205 11 90 4 2 9202004 300 3000 316.1 309.2 
        S16 2005 7 4077 15 205 11 90 4 2 9202004 300 3000 391.2 201.5 
        S2 2005 7 4077 15 205 11 90 4 2 9202004 300 3000 271.2 311.5 
        S28 2005 7 3180 15 205 11 44 5 6 9202004 651 1747 251.2 382.5",header=T,stringsAsFactors=F) 
+0

我上面試過,但我沒有得到我想要的答案。我必須指定n嗎? – user8848543

+0

它適用於我,我將數據添加到我的文章,它爲我提供的數據爲您工作? –

+0

n是由count函數創建的,所以不用你不必指定它 –