2017-10-28 118 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函数创建的,所以不用你不必指定它 –