dplyr:将组中的所有值除以组';s第一值
我的df看起来像这样:dplyr:将组中的所有值除以组';s第一值,r,dplyr,R,Dplyr,我的df看起来像这样: ID Obs Value 1 1 26 1 2 13 1 3 52 2 1 1,5 2 2 30 使用dplyr,我可以添加额外的列Col,这是将列value中的所有值除以该列中组的第一个值的结果 ID Obs Value Col 1 1 26 1 1 2 13 0,5 1 3
ID Obs Value
1 1 26
1 2 13
1 3 52
2 1 1,5
2 2 30
使用dplyr,我可以添加额外的列Col,这是将列value中的所有值除以该列中组的第一个值的结果
ID Obs Value Col
1 1 26 1
1 2 13 0,5
1 3 52 2
2 1 1,5 1
2 2 30 20
我该怎么做 按“ID”分组后,使用
mutate
将“Value”除以“Value”的第一个
,创建一个新列
library(dplyr)
df1 %>%
group_by(ID) %>%
mutate(Col = Value/first(Value))
如果第一个
的“值”为0,我们不想使用它,则使用逻辑表达式将“值”子集,然后取该值的第一个
df1 %>%
group_by(ID) %>%
mutate(Col = Value/first(Value[Value != 0]))
或在
base R
df1$Col <- with(df1, Value/ave(Value, ID, FUN = head, 1))
df1$Col或在不创建附加列的情况下:
库(tidyverse)
df=数据帧(ID=c(1,1,1,2,2),Obs=c(1,2,3,1,2),Value=c(26,13,52,1.5,30))
df%>%
分组依据(ID)%>%
在('值',~./第一个(.)处变异
#>#tibble:5 x 3
#>#组:ID[2]
#>ID Obs值
#>
#> 1 1 1 1
#> 2 1 2 0.5
#> 3 1 3 2
#> 4 2 1 1
#> 5 2 2 20
###或###
df%>%
分组依据(ID)%>%
在('值',函数(x)x/第一个(x))处进行变异
#>#tibble:5 x 3
#>#组:ID[2]
#>ID Obs值
#>
#> 1 1 1 1
#> 2 1 2 0.5
#> 3 1 3 2
#> 4 2 1 1
#> 5 2 2 20
由(v0.3.0)相关人员于2020-01-04创建,dplyr中是否有方法动态定义该值?有些组的第一个值为0,我希望通过除以第一个值来避免INFs!=0。@TImHaus。在这种情况下,将mutate
更改为mutate(Col=Value/first(Value[Value!=0])