如何基于R中的另一个相同的行值求和百分比?

时间:2019-03-30 19:12:49

标签: r

我的数据集由鲸鱼叫声组成。我有两个变量:nclicks和百分比。 nclicks是指通话中的点击次数(范围为3到30)。百分比是指在给定年份中发出此类呼叫的频率。我想对更长的通话次数(点击次数超过11次的百分比)求和,并将新行添加到具有11次点击次数和百分比百分比求和的数据框中。然后,我要删除组成新行的行。

我尝试将“ nclicks”编码为因子和数字。我使用了聚合,rowSums,rbind等的组合,但是没有运气。我最近来的是得到一个新的行,该行具有百分比总计,但我必须指定要手动包括的行(请参见下面的示例)。此方法还对nclicks值求和(因此,在下面的示例中,当我真的希望行号为4时,nclicks为11,因此我得到一个新行,其中nclicks为43(11 + 12 + 20),百分数为20。 +,百分比为20)。

nclicks=c(3,4,5,11,12,20) 

percent=c(30,30,20,10,5,5) 

df=data.frame(cbind(nclicks,percent)) 

df["11+",]=df["4",]+df["5",]+df["6",] 

df=df[-c(4,5,6), ] 

df

这就是我最终得到的:

 nclicks percent
1         3      30
2         4      30
3         5      20
11+      43      20

我想对nclicks的值大于10的行的百分比求和,但是在执行此操作时遇到了麻烦。我不想单独指定要包括的nclicks值,因为有些年份的nclick值很多> 10,而有些年份的nclick值很多> 10。

1 个答案:

答案 0 :(得分:0)

您可以创建一个nclicks>=11列以帮助汇总library("tidyverse") nclicks <- c(3, 4, 5, 11, 12, 20) percent <- c(30, 30, 20, 10, 5, 5) df <- tibble(nclicks, percent) df <- df %>% mutate(group = ifelse(nclicks >= 11, "11+", nclicks)) %>% group_by(group) %>% summarise_at(vars(nclicks, percent), sum) df #> # A tibble: 4 x 3 #> group nclicks percent #> <chr> <dbl> <dbl> #> 1 11+ 43 20 #> 2 3 3 30 #> 3 4 4 30 #> 4 5 5 20 所在的行。

site_a = set('cdeghklm')
site_b = set('cefhijlnop')
print(sorted(site_a - site_b))

['d', 'g', 'k', 'm']

reprex package(v0.2.1)于2019-03-31创建